频道栏目
首页 > 系统 > 虚拟机 > 正文

LNMP功能配置详解(默认虚拟主机)

2018-07-10 16:22:37         来源:swtIrene的博客  
收藏   我要投稿

默认虚拟主机

删除/usr/local/nginx/conf/nginx.conf文件中http{}配置里的server{},然后在http{}配置的最后添加一行:include vhost/*.conf

\

##注意nginx配置文件中,一条配置必须以分号 ; 结束,否则都视为一条配置;

创建虚拟主机的配置文件存放目录vhost ,和虚拟主机配置文件:

\

## 一个server{} 就是一个虚拟主机

## 可以在一个配置文件中写多个虚拟主机

## 也可以给每一个虚拟主机创建单独的配置文件

## nginx的server_name与apache不同,nginx可以直接定义多个server_name

## 当server_name后面带有default_server字段时,就代表这个虚拟主机就是默认虚拟主机## 否则跟apache相同,第一个虚拟主机为默认虚拟主机

检查配置文件是否有语法错误,平滑重启nginx服务:

##检查语法错误:/usr/local/nginx/sbin/nginx -t

##平滑重启nginx服务,代表在不停止nginx服务的情况下,重新加载配置文件,重启工作线程:nginx -s reload

测试访问

在/data/wwwroot/目录下创建虚拟主机的根目录一个测试页文件

\

使用curl测试访问www.test.com

[root@server-lnmp ~]# curl -x127.0.0.1:80 www.test.com

This is test page

使用curl测试访问www.default.com

[root@server-lnmp ~]# curl -x10.1.1.28:80 www.default.com

This is defalut site

使用curl测试访问其他没有定义过server_name的域名

[root@server-lnmp ~]# curl -x10.1.1.28:80 www.aaa.com

This is defalut site

[root@server-lnmp ~]# curl -x10.1.1.28:80 bbb.cn

This is defalut site

Nginx用户认证

在server_name 是www.test.com的虚拟主机配置下面添加以下的配置

\

生成用于验证的用户和密码,这里也需要用到apache的htpasswd命令,如果没有这个命令可以yum安装httpd-tools可以了

\

#注:htpasswd命令的-c选项,只有在第一次创建用户认证的密码文件时需要使用,

#如果再次添加用户和密码时使用了-c选项,则会覆盖掉之前的所有内容

##检查语法错误:/usr/local/nginx/sbin/nginx -t

##平滑重启nginx服务,代表在不停止nginx服务的情况下,重新加载配置文件,重启工作线程:/usr/local/nginx/sbin/nginx -s reload

测试效果

curl 测试访问www.test.com

\

\

针对目录的用户认证

修改test.com.conf配置文件

\

#注意location匹配的目录不再是根目录,而是/admin/目录#这里的根目录指的是网站的根目录:/data/wwwroot/www.test.com/

##检查语法错误:/usr/local/nginx/sbin/nginx -t

##平滑重启nginx服务,代表在不停止nginx服务的情况下,重新加载配置文件,重启工作线程:/usr/local/nginx/sbin/nginx -s reload

测试效果

curl测试访问www.test.com/admin

\

针对文件的用户认证

\

##检查语法错误:/usr/local/nginx/sbin/nginx -t

##平滑重启nginx服务,代表在不停止nginx服务的情况下,重新加载配置文件,重启工作线程:/usr/local/nginx/sbin/nginx -s reload

测试效果

创建测试文件

[root@server-lnmp ~]# echo '/data/wwwroot/www.test.com/admin.html' >/data/wwwroot/www.test.com/admin.html

[root@server-lnmp ~]# echo '/data/wwwroot/www.test.com/admin/admin.html' >/data/wwwroot/www.test.com/admin/admin.html

curl测试访问www.test.com/admin.html

\

Nginx域名重定向

修改test.com.conf配置文件

\

配置解释

\

关于URI

\

测试效果

curl测试访问test.com和abc.com

\

Nginx访问日志

配置方式

\

除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中增加配置行

\

配置文件的内容最后一行内容就是定义虚拟主机的访问日志

\

测试效果

使用curl访问一次www.test.com,然后查看日志文件的内容。

\

Nginx日志切割

nginx和apache不同,nginx没有自带的日志切割工具所以需要自己编写一个日志切割脚本,然后配合计划任务来实现日志切割的功能。

自定义日志切割脚本

脚本内容如下,一般脚本都放在/usr/local/sbin/目录下

\

任务计划

编写完日志切割脚本后,使用crontab -e添加一条任务计划,每天0点0分执行这个日志切割脚本

\

静态文件:不记录日志,过期时间

配置方式

编辑虚拟主机配置文件,在虚拟主机www.test.com的配置中添加以下内容

\

配置说明:

\

Nginx防盗链

配置方式

防盗链可以和静态文件结合起来配置。需要修改前面添加的静态文件的配置、修改后test.com.conf文件的内容如下:

\

防盗链配置解释

\

测试效果

curl直接请求访问www.test.com/test.jpg,这时referer为none 所有可以访问

\

curl 指定referer为http://baidu.com进行访问请求这时referer为http://baidu.com没在白名单里面,所以状态码返回403,拒绝访问了

\

Nginx访问控制

配置方式

需求:访问/aaa/目录的请求,只允许某几个IP访问,在虚拟主机www.test.com的配置里添加如下内容:

\

配置说明:

\

测试效果

创建测试目录和文件

\

curl 将域名www.test.com/aaa/解析到127.0.0.1:80这时系统本地就会使用127.0.0.1这个ip向nginx服务发起访问请求,所以remote_addr就是127.0.0.1,可以正常访问

\

curl 将域名www.test.com/aaa/解析到10.1.1.28:80这时系统本地就会使用10.1.1.28这个ip向nginx服务发起访问请求,所以remote_addr就是10.1.1.28,会拒绝访问

\

匹配正则

\

根据user_agent限制

\

Nginx解析php相关配置

配置方式

在虚拟主机www.test.com 的配置最后面的access_log前一行添加下面的内容

\

配置解释:

\

配置php-fpm监听 ip:port

修改/usr/local/php-fpm/etc/php-fpm.conf配置文件:

将listen = /tmp/php-fcgi.sock 修改为 listen = 10.1.1.28:9000 ,这里的ip需要根据自己的环境来填写

\

再修改test.com.conf中虚拟主机www.test.com的配置

将fastcgi_pass unix:/tmp/php-fcgi.sock; 修改为fastcgi_pass 10.1.1.2:9000;

\

重载php-fpm和nginx配置

\

测试访问www.test.com/test.php

\

Nginx代理

配置代理服务器之前的测试

\

配置代理服务器

这里我们先用ping命令查看一下baidu.com的ip地址

\

在/usr/local/nginx/conf/vhost/目录下添加一个配置文件 proxy.conf并写入代理服务器的配置

\

测试效果

再次测试访问 curl -x127.0.0.1:80 www.baidu.com将www.baidu.com解析到本机,结果可以访问到正则的百度首页了

\

上一篇:Ubuntu环境下的VirtualBox连接Redhat虚拟机的操作步骤
下一篇:个人学习snmp时会遇到的问题记录
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站