Nginx防盜鏈,Nginx訪問控制, Nginx解析php相關配置, Nginx代理

Nginx防盜鏈

Nginx防盜鏈配置須要與不記錄日誌和過時時間結合在一塊兒,由於都用到了location。php

打開配置文件,註釋掉一部份內容(紅框上方),添加內容(紅框部分),保存退出html

valid_referers none blocked server_names *.test.com ,定義referer白名單nginx

if ($invalid_referer) { return 403,if函數的意思是,若是不是白名單內的域名,返回值爲403vim

檢查配置文件語法正誤,並從新加載配置文件服務器

測試防盜鏈curl

不是白名單內的訪問,返回403;而白名單內的訪問,返回200,說明放到鏈設置成功。socket

Nginx訪問控制

  • 需求:訪問/admin/目錄的請求,只容許某幾個IP訪問,配置以下:

location /admin/ide

{函數

    allow 192.168.133.1;php-fpm

    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
  • 能夠匹配正則

 

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

{

    deny all;

}

  • 根據user_agent限制

 

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

{

    return 403;

}

  • deny all和return 403效果同樣

編輯配置文件,添加內容(紅框中)

檢查配置文件語法正誤,並從新加載配置文件

測試

正則匹配

打開配置文件,添加內容,保存退出

檢查配置文件語法正誤,並從新加載配置文件

建立一個目錄和php文件

訪問測試,訪問php文件,提示403;訪問txt文件,成功

查看日誌

根據user_agent限制

打開配置文件vim /usr/local/nginx/conf/vhost/test.com.conf

添加內容

檢查配置文件語法正誤,並從新加載配置文件

訪問測試,模擬一個user_agent

Tomato改爲tomato,則提示200(可在配置文件中的匹配符號~後面加上*號,能夠忽略大小寫)

Nginx解析PHP相關配置

  • 配置以下:

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

打開配置文件vim /usr/local/nginx/conf/vhost/test.com.conf

添加內容,保存退出

建立一個php文件

訪問3.php,不能解析,直接出現源碼

從新加載配置文件

此時訪問3.php,能夠正常解析了

查看php-fpm.conf配置文件的監聽地址,這裏是什麼,那麼在Nginx的配置文件中就寫什麼

修改php-fpm.conf配置文件,改監聽端口

檢查語法對錯,從新加載配置文件

查看監聽端口

測試訪問,提示502

查看日誌

修改配置文件vim /usr/local/nginx/conf/vhost/test.com.conf

檢查語法對錯,從新加載配置文件

此時再訪問3.php,就不出現502了,解析正常

之後出現502報錯,就要查看Nginx和php-fpm中格式是否一致;fastcgi _param SCRIPT _FILENAME所在行的路徑要和root路徑一致。

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/;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     }

}

切換到/usr/local/nginx/conf/vhost/目錄下

建立代理服務器

server_name ask.apelearn.com,定義域名

proxy_pass http://121.201.9.155/,指定被代理的IP

proxy_set_header Host $host,$host指的是代理服務器的servername

檢查語法對錯,從新加載配置文件

測試

經過本地訪問遠程站點

擴展

502問題彙總

location優先級

相關文章
相關標籤/搜索