6月11日任务

12.13 Nginx防盗链
12.14 Nginx访问控制
12.15 Nginx解析php相关配置

12.16 Nginx代理

Nginx防盗链


如下图配置:


*:此处规则和apache不同在于只要allow某个IP访问就结束,是独立的,不受后面deny的影响

测试:


上下的状态码均为200,看日志发现,访问192.168.242.150的来源IP是192.168.242.128,在白名单中


把网卡2设置成仅主机模式,dhclient自动获取IP后 再测试


ifconfig查看网卡2的IP


测试:该IP由于没有在白名单中,所以访问被拒绝403forbidden


同时可以进行正则匹配(适用于网站被黑,数据库信息被窃,因为上传图片的目录没有做禁止解析php操作)


如下图:


测试:


如果网站被cc攻击,或者想禁掉某些蜘蛛,可以通过限制user_agent来实现


如果忽略大小写只需要在~后加一个*

测试1:


测试2:(配置文件中加*后忽略大小写生效)


Nginx解析php相关配置


如下图:


重新加载前测试:显示的是源码,无法解析php


重新加载配置文件之后:显示的是html代码,解析成功


502错误第一种(nginx配置文件中socket路径错误)

php解析配置文件中的unix: /tmp/ .......sock socket路径不对

测试:出现502


找到nginx错误日志,如下图:

找不到socket (no such file or directory),这时候应该回到php-fpm服务的配置文件(/usr/local/php-fpm/etc/php-fpm.conf)中查看监听socket的正确路径,然后修改nginx服务中vhost下的test.com.conf配置文件


502错误第二种:(监听端口和IP在php-fpm和nginx服务中不一致)

如果不是监听socket,用监听IP和端口的形式,测试如下图:

修改php-fpm服务配置文件


重启php-fpm服务  /etc/init.d/php-fpm reload

检查php-fpm配置文件 /usr/local/php-fpm/sbin/php-fpm -t

重新加载nginx服务/检错 /usr/local/nginx/sbin/nginx -t ;  /usr/local/nginx/sbin/nginx -s reload


!curl同样出现502 Bad Gateway, tail nginx_error.log发现也是No Such file or directory 原因是因为改了监听模式,需要在nginx的配置文件中做对应的修改(注释socket监听,增加IP和端口监听),如下图



file-name中和网站root地址相同

第三种502错误(nginx权限问题,如果不定义,监听权限是440)


如下图测试:permission denied(无访问权限),因为/tmp/php-fcgi.sock所属主和组都是root,而nginx服务读取php是以nobody的身份去读


可以临时chown nobody /tmp/php-fcgi-sock,可以解析,因为所属主的暂时更改


第四种502错误

php-fpm服务的资源耗尽,如Mysql查询很慢,卡死在某处(需要通过优化解决)

Nginx代理


e.g. 用户想访问某私网IP/访问国外服务器,需要通过代理服务器的方式实现

编辑代理服务器文件(因为只是代理服务器,不需要访问本地服务器的任何文件,所以无需添加root地址)

测试:

代理服务器为ask.apelearn.com web服务器为http://121.201.9.155/  两者之间可以互通

Host为ask.apelearn.com $host:server_name

X-Real-IP和X-Forwarded-For定义两个变量


测试:

/robots 是针对蜘蛛索引的一个列表


测试失败


扩展

502问题汇总 http://ask.apelearn.com/question/9109
location优先级 http://blog.lishiming.net/?p=100

猜你喜欢

转载自blog.csdn.net/fuel91/article/details/80694314