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

11月28日任务

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

1.Nginx防盗链

示例一:

  • 配置如下,可以和上面的配置结合起来
  • 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;

}

  • 配置完成如图

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

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

2.Nginx访问控制

示例一:

  • 需求:访问/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  

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

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

示例二:禁止解析php

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

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

{        

deny all;

}

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

  • 用curl测试一下

示例三:根据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 检测语法,并重新加载配置文件

  • 用curl 检测一下

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

3.Nginx解析PHP相关配置

示例一:

  • 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代理

示例一:

  • 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 测试一下,访问成功,通过本地地址访问到远程的网址

猜你喜欢

转载自my.oschina.net/u/3962011/blog/2963478