12-1 12 防盗链 访问控制 php解析 代理
2019独角兽企业重金招聘Python工程师标准>>>
12.13 Nginx防盗链
12.14 Nginx访问控制
12.15 Nginx解析php相关配置
12.16 Nginx代理
扩展
- 502问题汇总 http://ask.apelearn.com/question/9109
- location优先级 http://blog.lishiming.net/?p=100
12.13 Nginx防盗链
用来禁止来自非本网站的资源访问请求,可以保护服务器不为别的网站请求做响应
[root@axiang-02 ~]# cd /usr/local/nginx/
[root@axiang-02 nginx]# vim conf/vhost/ccc.conf
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ 匹配
~*表示不区分大小写,^.+表示任意字符
{expires 7d;valid_referers none blocked server_names *.ccc.om ; //定义白名单,不匹配403if ($invalid_referer) {return 403; }access_log off;
}
也可以和之前的配置结合起来,多次定义有优先级的问题要注意,参考扩展
测试
[root@axiang-02 vhost]# curl -x127.0.0.1:80 ccc.com/1.gif
asfoawnfnasxojfan
[root@axiang-02 vhost]# curl -e "http://www.baidu.com/1.txt" -x127.0.0.1:80 ccc.com/1.gif
#-e表示指定指定refer 必须是“http://~~格式”<head><title>403 Forbidden</title></head> 403表示防盗链成功
12.14 Nginx访问控制
如果发现有来自某个固定IP,其访问请求不太像人类行为,可以通过访问控制拒绝为之服务 访问控制还可以创建只允许内网IP访问的网站资源
需求:访问/admin/目录的请求,只允许某几个IP访问,配置如下:
目录访问控制
location /kongzhi/{allow 127.0.0.1;deny all;}mkdir kongzhi
vim kongzhi/1.php
echo “test,test”>/data/wwwroot/ccc.com/kongzhi/2.html -t && -s reload
curl -x127.0.0.1:80 ccc.com/kongzhi/2.html -I
curl -x192.168.83.138:80 ccc.com/kongzhi/2.html -I
HTTP/1.1 403 Forbidden
[root@axiang-02 nginx]# curl -x127.0.0.1 ccc.com/kongzhi/2.html -I
curl: (7) Failed connect to 127.0.0.1:1080; 拒绝连接 //没有指定端口也不行
[root@axiang-02 nginx]# curl -x127.0.0.1:80 ccc.com/kongzhi/2.html -I
HTTP/1.1 200 OK
页面访问控制
- 可以匹配正则,限制含有某些字符的目录下的php文件。
- 根据user_agent限制
server
{listen 80;server_name aaa.com;index index.html index.htm index.php; root /data/wwwroot/aaa.com;location ~ .*(upload|image)/.*\.php$ / //表示匹配包含upload或image字符的目录下的php{deny all;}if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato') //表示匹配agent为Spider/3.0|YoudaoBot|Tomato的拒绝访问{return 403;}
}
- deny all和return 403效果一样
- 匹配符号~ *可以不区分大小写
12.15 Nginx解析php相关配置
之前的主配置文件中,删除service的部分含有php解析的代码。改为include后,需要重新添加到各个虚拟主机
[root@axiang-02 php-fpm]# cd /usr/local/nginx/conf/vhost/
[root@axiang-02 vhost]# ls
aaa.conf bbb.conf ccc.conf ld.conf proxy.conf ssl.conf
[root@axiang-02 vhost]# vi aaa.conf
[root@axiang-02 vhost]# cat aaa.conf
server
{
listen 80;
server_name aaa.com;
index index.html index.htm index.php;
root /data/wwwroot/aaa.com;location ~ .*(upload|image)/.*\.php$
{allow 127.0.0.1;
allow 192.168.83.1;
deny all;
}
if ($http_user_agent ~* 'Spider/3.0|YoudaoBot|Tomato')
{return 403;
}
location ~ \.php$ //php解析核心配置
{
include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; //这里要指定正确
#fastcgi_pass 127.0.0.1:9000; //也可以监听ip端口。不用来与外网交互,只在本机监听进程fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /data/wwwroot/aaa.com$fastcgi_script_name;
}
}
测试
[root@axiang-02 vhost]# /usr/local/nginx/sbin/nginx -s reload
[root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/aaa/aaa.php
this is aaa.com
[root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/reupload/aaa.php
<?php echo "this is aaa.com"; ?> //做了访问控制的目录即使通过访问请求,也仍然不能解析php
sock监听错误
[root@axiang-02 vhost]# vim aaa.conf
fcgi故意写错为cgi再测试
[root@axiang-02 vhost]# /usr/local/nginx/sbin/nginx -s reload
[root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/aaa/aaa.php<head><title>502 Bad Gateway</title></head> 出现502坏访问网关
查看错误日志(主配置文件里有定义位置,注意是nginx_error.log 把级别改为debug更详细)
[root@axiang-02 vhost]# vi /usr/local/nginx/conf/nginx.conf
[root@axiang-02 vhost]# tail /usr/local/nginx/logs/nginx_error.log
2017/08/09 17:40:37 [crit] 2966#0: *31 connect() to unix:/tmp/php-cgi.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: aaa.com, request: "GET HTTP://aaa.com/aaa/aaa.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "aaa.com"
看到提示,php-cgi.sock不存在,说明nginx与php-fpm需要指向正确的 sock文件进行交互
[root@axiang-02 vhost]# ls /usr/local/php-fpm/etc/php-fpm.d/
axiang.conf www.conf
[root@axiang-02 vhost]# cat !$www.conf
cat /usr/local/php-fpm/etc/php-fpm.d/www.conf[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
listen.mode = 666
- IP端口监听
改为监听IP和端口
[root@axiang-02 vhost]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf[www]
#listen = /tmp/php-fcgi.sock
listen = 127.0.0.1:9000
listen.mode = 666[root@axiang-02 vhost]# /usr/local/php-fpm/sbin/php-fpm -t
[root@axiang-02 vhost]# /etc/init.d/php-fpm reload
[root@axiang-02 vhost]# netstat -lntp //查看9000端口tcp0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3018/php-fpm: maste [root@axiang-02 vhost]# vi aaa.conflocation ~ \.php$
{include fastcgi_params;#fastcgi_pass unix:/tmp/php-fcgi.sock;
#虚拟主机配置文件中定义监听方式,sock和ip:port两种fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /data/wwwroot/aaa.com$fastcgi_script_name;
}
[root@axiang-02 vhost]# /usr/local/nginx/sbin/nginx -s reload
[root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/aaa/aaa.php
this is aaa.com
- 注意解析的根目录参数
- /data/wwwroot/aaa.com$fastcgi_script_name;
- 注意nginx对接php-fpm监听方式
- vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
- 如果有优先级更高的php匹配,则
location ~ \.php$
中的参数不生效- 比如
location ~ .*(upload|image)/.*\.php$
优先级大于location ~ \.php$
,所以curl -x127.0.0.1:80 aaa.com/reupload/aaa.php出现php不解析<?php echo "this is aaa.com"; ?>
- 比如
12.16 Nginx代理
当两边的服务器不能直接访问,或者访问速度很慢,可以通过优秀的代理服务器作为中间的访问跳板
[root@axiang-02 vhost]# vim proxy.conf //创建虚拟代理服务器,加入如下内容server
{listen 80;server_name ask.apelearn.com;location /{proxy_pass http://121.201.9.155/; //前提是你得知道合适的代理服务器proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}[root@axiang-02 vhost]# /usr/local/nginx/sbin/nginx -t
[root@axiang-02 ~]# /usr/local/nginx/sbin/nginx -s reload
[root@axiang-02 ~]# curl -x127.0.0.1:80 ask.apelearn.com/robots.txt
#
# robots.txt for MiWen
#User-agent: *Disallow: /?/admin/
Disallow: /?/people/
Disallow: /?/question/
Disallow: /account/
Disallow: /app/
Disallow: /cache/
Disallow: /install/
Disallow: /models/
...
转载于:https://my.oschina.net/u/3579690/blog/1558953
12-1 12 防盗链 访问控制 php解析 代理相关推荐
- Python--爬虫,了解防盗链-->解决防盗链,解决反反反爬
目录 一.什么是防盗链?其作用/原理是什么? 概念: 作用: 原理: 如何进行防盗链保护: 二.步骤分析 2.1.运行环境 2.2.目标 2.3.页面分析 2.3.1.进入主页面,尝试分析源代码 2. ...
- linux的Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理介绍
Nginx防盗链 思路与httpd一样,配置也不难,但要与过期时间.不记录日志配置结合起来. 1.配置文件内容 [root@gary-tao test.com]# vim /usr/local/ngi ...
- Nginx防盗链,Nginx访问控制, Nginx解析php相关配置, Nginx代理
2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 Nginx防盗链配置需要与不记录日志和过期时间结合在一起,因为都用到了location. 打开配置文件,注释 ...
- Nginx防盗链、访问控制、Nginx解析PHP相关配置、Nginx代理
2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 在配置文件里写入以下内容: 用curl测试 访问控制 Nginx限制某些IP不能访问或者只允许某些IP访问. ...
- LNMP(nginx防盗链,访问控制,解析php相关配置,Nginx代理,常见502问题)
一.nginx防盗链 nginx防盗链: [root@lnmp ~]# vim /usr/local/nginx/conf/vhost/test.com.conf 添加以下内容 location ...
- Nginx防盗链与访问控制
防盗链 1.编辑配置文件 [root@plinuxos ~]# vi /usr/local/nginx/conf/vhost/default.conf server { listen 80 defau ...
- Apache(httpd)配置--防盗链配置和访问控制
一.配置防盗链 通过防盗链的方式,可以设置限制第三方的站点通过引用的方式获取服务器上的图片,数据等,如果想要获取本站点的图片数据,只能通过本站点访问获取,这样也有效的减少了服务器的资源. 什么是ref ...
- Linux-LNMP(静态元素不记录日志和过期时间,防盗链,解析php,代理,支持ssl)
Linux-LNMP-Nginx配置二 静态文件不记录日志和过期时间 Nginx防盗链 Nginx访问控制 Nginx解析php相关配置 Nginx代理 Nginx负载均衡 SSL原理 生成SSL密钥 ...
- nginx 访问控制 防盗链
访问控制功能分为基于用户的访问控制及基于IP的访问控制 基于用户的访问控制 [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf locat ...
最新文章
- 你也可以设计简单的内容管理系统
- kafka单机安装(版本kafka_2.11-2.2.0.tgz)
- php如何避免时间重复,如何避免/停止php和html的重复插入?
- 「分块」数列分块入门1 – 9
- python爬取的内容不是中午_大年初六中午,全国各区县哪里最冷?
- 帝国CMS7.2阿里大于云短信插件(UTF-8)
- 计算机大学生学生证,电子学生证运行一月争议多:学生感觉被监控
- WindowsServers2019上手体验
- css与jquery、图标字体、常用数据
- centOS7下安装配置nagios
- App推广:ASO策略篇,清榜频发,优化热情不减
- SSM智能家居产品销售管理毕业设计源码161618
- 详解EBS接口开发之采购订单导入
- Kubernetes安装与卸载
- VPC NAT(SANT,NANT)实验
- display和visibility的区别
- 2021云南省高考省统测成绩查询,2021年云南省第一次省统测成绩对比2020年高考录取分析...
- 天乐生活百科,商业百科,网址大全,中国生意场上的百科全书 源码
- 王倩兮山水画 【珍藏版】
- android sip网络电话源码,Voip网络电话有关