nginx防盜鏈、訪問控制、解析php、代理服務

11月28日任務

12.13 Nginx防盜鏈
12.14 Nginx訪問控制
12.15 Nginx解析php相關配置
12.16 Nginx代理php

1.Nginx防盜鏈html

示例一: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)$vim

{    curl

expires 7d;    socket

valid_referers none blocked server_names  *.test.com ; 定義白名單    ide

if ($invalid_referer) {         若是不是白名單,返回403php-fpm

return 403;    測試

   }    url

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 測試一下,訪問成功,經過本地地址訪問到遠程的網址

相關文章
相關標籤/搜索