6月11日任务

12.13 Nginx防盗链

1.编辑配置文件,(可以和之前的配置结合起来)

 # vim /usr/local/nginx/conf/vhost/test.com.conf

6月11日任务

2. -t && -s reload

3.测试   //-e 用来模拟referer ,当它为baidu时,403;当它为test.com,正常访问,说明配置成功

6月11日任务


12.14 Nginx访问控制

需求:访问/admin/目录的请求,只允许某几个IP访问,配置如下

1.针对目录

# vim /usr/local/nginx/conf/vhost/test.com.conf   

//针对对admin目录只允许以下2个ip访问

6月11日任务


测试

172.31.208.147时本机ip,为了试验先在配置文件里注释掉

6月11日任务


访问,403,不允许访问admin目录

#  curl  -x172.31.208.147:80 test.com/admin/

6月11日任务

#  curl  -x127.0.0.1:80 test.com/admin/        //可以正常访问

6月11日任务


2.匹配正则

# vim /usr/local/nginx/conf/vhost/test.com.conf

6月11日任务

这里匹配upload或image目录,以.php结尾的都给拒绝掉

试验

# mkdir /data/wwwroot/test.com/upload/

# echo "11111" > /data/wwwroot/test.com/upload/1.php

#  curl  -x127.0.0.1:80 test.com/upload/1.php

6月11日任务

查看一下访问日志

#cat /tmp/1.log

6月11日任务

3.根据user_agent限制

编辑配置文件

#vim /usr/local/nginx/conf/vhost/test.com.conf

6月11日任务


检查语法重新加载

-t && -s reload

试验

# curl  -A "YoudaoBotdadfd" -x127.0.0.1:80 test.com/

6月11日任务# curl  # #curl  -x127.0.0.1:80 test.com/
6月11日任务

另外如果要user_agent不区分大小写,需要在~后加*

6月11日任务

可以看到重新加载配置文件后,代码变为403了

6月11日任务


12.15 Nginx解析php相关配置

nginx默认是不能解析php的

# vim /data/wwwroot/test.com/3.php   //添加如下内容

6月11日任务

# curl   -x127.0.0.1:80 test.com/3.php   //访问测试,不能解析

6月11日任务


下面配置解析php

编辑配置文件

# vim /usr/local/nginx/conf/vhost/test.com.conf    //添加如下方框中的内容

6月11日任务

fastcgi_pass 用来指定php-fpm监听的地址或者socket

检查语法重新加载

# /usr/local/nginx/sbin/nginx -t

# /usr/local/nginx/sbin/nginx -s  reload

测试

# curl   -x127.0.0.1:80 test.com/3.php    //可以解析php了

6月11日任务

关于代码502的可能原因

有错误,看日志

首先要把日志记录模式改为debug

# vim /usr/local/nginx/conf/nginx.conf   //修改完主配置文件要进行重启/etc/init.d/nginx restart

6月11日任务

# tail /usr/local/nginx/logs/nginx_error.log


1.配置socket文件路径错误   //这里故意改错把f删掉

#vim /usr/local/nginx/conf/vhost/test.com.conf

6月11日任务.检查语法,重新加载

测试,可以看到代码是502

6月11日任务

查看错误日志

6月11日任务


2.php配置文件是监听端口,不监听socket,而nginx是监听socket

# vim /usr/local/php-fpm/etc/php-fpm.conf

6月11日任务

# /usr/local/php-fpm/sbin/php-fpm -t

# /etc/init.d/php-fpm reload

# netstat -lntp    

6月11日任务

访问

#curl   -x127.0.0.1:80 test.com/3.php     //502

6月11日任务

查看日志

6月11日任务

改正这个问题需要修改php和nginx配置文件,使他们监听的内容一致,都是端口,或都是socket文件

这里来修改nginx进行监听端口,来改正

#vim /usr/local/nginx/conf/vhost/test.com.conf

6月11日任务

访问测试,

6月11日任务

3./data/wwwroot/test.com路径要写对,前后要对应

6月11日任务

6月11日任务

4.php配置文件中listen.mode要设置为666,不定义就会默认为660

6月11日任务

下面监听socket并注释掉listen.mode

6月11日任务

重启php服务再查看一下sock文件详情 ,可以看到普通用户(包括nginx的用户)是没有权限的

6月11日任务

修改nginx配置文件仍监听socket,并进行访问测试,可以看到结果是502

6月11日任务

日志显示权限不够

6月11日任务

说明:因为socket文件默认权限是660,而nginx的用户和组都是nobody,因此默认是无法读取socket文件的,所以要进行权限设置为666。另一种方法就是,socket文件的属主。

5.还有一种特殊情况,就是php-fpm资源耗尽,这中情况需要去优化


12.16Nginx代理

6月11日任务

代理应用场景:用户不能访问web服务器或者访问web服务器比较慢

配置方法

# cd /usr/local/nginx/conf/vhost

#  vim proxy.conf    //添加如下内容
6月11日任务


检查语法重新加载-t && -s reload

测试,访问本机可以访问到论坛,配置成功

6月11日任务