nginx 配置語法
阿新 • • 發佈:2018-11-09
一、語法規則: location [=|~|~*|^~] /uri/ { … }
-
=
開頭表示精確匹配 -
^~
開頭表示uri以某個常規字串開頭,理解為匹配 url路徑即可。nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。 -
~
開頭表示區分大小寫的正則匹配 -
~*
開頭表示不區分大小寫的正則匹配 -
!~
和!~*
分別為區分大小寫不匹配及不區分大小寫不匹配 的正則 -
/
通用匹配,任何請求都會匹配到。
多個location配置的情況下匹配順序按:首先匹配 =,其次匹配^~, 其次是按檔案中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。
二、ReWrite語法
last
– 基本上都用這個Flag。break
– 中止Rewirte,不在繼續匹配redirect
– 返回臨時重定向的HTTP狀態302permanent
– 返回永久重定向的HTTP狀態301
三、Redirect語法
server { listen 80; server_name xx.xx.cn; index index.html index.php; root html; if ($http_host !~ "^star\.igrow\.cn$" { rewrite ^(.*) http://xx.xx.cn$1 redirect; } }
四、防盜鏈
location ~* \.(gif|jpg|swf)$ { valid_referers none blocked start.igrow.cn sta.igrow.cn; if ($invalid_referer) { rewrite ^/ http://$host/logo.png; } }
五、根據檔案型別設定過期時間
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ { if (-f $request_filename) { expires 1h; break; } }
六、禁止訪問某個目錄
location ~* \.(txt|doc)${ root /data/xx; deny all; }