nginx防盗链、访问控制、解析php、代理服务

本文深入探讨Nginx的防盗链、访问控制、PHP解析及代理配置,通过实例演示如何实现具体功能,包括设置白名单、IP访问限制、禁用特定PHP请求及通过Nginx代理访问远程服务器。

11月28日任务

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

1.Nginx防盗链

860c4141f4662ecfe58095e4f7af5099b22.jpg

示例一:

  • 配置如下,可以和上面的配置结合起来
  • vi /usr/local/nginx/conf/vhost/test.com.conf

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$

{    

expires 7d;    

valid_referers none blocked server_names  *.test.com ; 定义白名单    

if ($invalid_referer) {         如果不是白名单,返回403

return 403;    

   }    

access_log off;

}

  • 配置完成如图

78afc4ba865e27ea3beb5fac90da9f35c51.jpg

  • -t && reload 检测语法并重新加载配置文件

1063e62439a3e2c40297029bd9d086d4c7d.jpg

  • 用curl 测试一下,-e 指定

58afb2695aa9eda598ee76d8aa9f7003692.jpg

 

2.Nginx访问控制

a0774006b5ab817e8d0934c1e8e080ea1ef.jpg

0e60d02591cc1e1ba5c706ff9e60f640abe.jpg

示例一:

  • 需求:访问/admin/目录的请求,只允许某几个IP访问,配置如下:
  • vi /usr/local/nginx/conf/vhost/test.com.conf

location /admin/

{    

allow 192.168.133.1;    

allow 127.0.0.1;    

deny all;

}  

  • mkdir /data/wwwroot/test.com/admin/  
  • echo “test,test”>/data/wwwroot/test.com/admin/1.html  
  • -t && -s reload  检查语法并重新加载配置文件
  • 测试:
  • curl -x127.0.0.1:80 test.com/admin/1.html -I  

1b818e24cfe25afb5bc825e2f28fcc2805a.jpg

  • curl -x192.168.133.130:80 test.com/admin/1.html -I

8dae83b010af83b013f1b3d3dbacbc3f24e.jpg

  • curl -x 192.168.142.128:80 test.com/admin/

6e7f519aeca24f0d0c272f468afd1f9ab58.jpg

 

示例二:禁止解析php

  • 可以匹配正则
  • vi /usr/local/nginx/conf/vhost/test.com.conf

location ~ .*(abc|image)/.*\.php$

{        

deny all;

}

  • -t && reload 检测语法,并重新加载配置文件

0ee5dd638b10f026794467555673859f4b8.jpg

  • 用curl测试一下

e02cc1a0854396f3da7e81a414b1a6eb19f.jpg

 

示例三:根据user-agent限制

  • vi /usr/local/nginx/conf/vhost/test.com.conf

if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato')

{      

return 403;

}  

  • deny all和return 403效果一样
  • -t && reload 检测语法,并重新加载配置文件

0ee5dd638b10f026794467555673859f4b8.jpg

  • 用curl 检测一下

206f26e3968c92e7afda8f4fdef6e34107c.jpg

  • 如果想忽略大小写,就如下在~ 后添加一个*号就行了

4c4afa1c613f891af7d0b31732b1a586873.jpg

 

 

3.Nginx解析PHP相关配置

3b521c603428bb98b40bec771ad23426390.jpg

示例一:

  • vi /usr/local/nginx/conf/vhost/test.com.conf
  • 配置如下:

location ~ \.php$    

{        

include fastcgi_params;        

fastcgi_pass unix:/tmp/php-fcgi.sock;        

fastcgi_index index.php;        

fastcgi_param SCRIPT_FILENAME

/data/wwwroot/test.com$fastcgi_script_name;    

}

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

4.Nginx代理

da2ea746484030647781c608e1ba7bab171.jpg

示例一:

  • cd /usr/local/nginx/conf/vhost  进入目录下
  • vim proxy.conf //加入如下内容

server

{    

listen 80;    

server_name ask.apelearn.com;     定义一个域名

location /    

{        

proxy_pass      http://121.201.9.155/;         配置真实IP

proxy_set_header Host   $host;       要访问的域名 

proxy_set_header X-Real-IP      $remote_addr;   指定ip的 

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    

   }

}

  • /use/local/nginx/sbin/nginx -t  检测语法错误
  • /use/local/nginx/sbin/nginx -s reload 重新加载一下配置文件
  • curl 测试一下,访问成功,通过本地地址访问到远程的网址

a05edc1ec328ec3047c49a3e1cb432a554a.jpg

转载于:https://my.oschina.net/u/3962011/blog/2963478

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值