這裏主要對nginx的Location的一些跳轉部署作簡單說明(在項目的部署過程當中)。
由於在項目的部署中,常常須要對一些特定的訪問uri進行跳轉或者組合,或者對特定的訪問文件須要進行訪問的限定,都屬於nginx的部署設計範疇,由於運用太過於靈活,這裏先對最基礎的進行整理詳解。
Location的語法(因爲在前面博客裏寫過,這裏進行原理整理)
1. Location / { } 訪問該設置的域名下面,會所有跳轉(注意這裏是網址符不是轉義符,由於http://www.test.com/***必定是有 / 符號的 )
要使得訪問的全部頁面進行跳轉到某個網站(就是反向代理的設置)
location /
{
//代理的網址
proxy_pass http://www.test.com;
//設置代理後的頭部Host部分 把host改爲本身
proxy_set_header Host $host;
//模擬客戶端請求的IP 去請求
proxy_set_header X-Real-IP $remote_addr;
//全部的代理IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
2.通常的平臺網站,可能圖片消耗流量過多(防止別人盜鏈)須要進行必定的盜鏈設置(對本網站的圖片進行防盜鏈設置)
location ~ \.(gif|jpg|png|swf|flv)$
{
valid_referers none blocked www.test.com;
if ( $invalid_referer ) {
return 404;
}
}
PS匹配語法:
~ 對大小寫敏感的匹配
\. 匹配 .(轉義符,若是沒有\轉義符表示匹配任何字符)
若是是須要對某個目錄進行防盜鏈設置(例如/img/目錄下面)
location ~ /img/
{
valid_referers none blocked www.test.com;
if ( $invalid_referer ) {
return 404;
}
}
PS:特別注意location的格式
location ~
{
//這裏是內容
}
當把{} 寫在location一行的時候,常常會致使無效的狀況
location的匹配規則:正則 location 匹配讓步普通 location 的嚴格精確匹配結果;但覆蓋普通 location 的最大前綴匹配結果
3.有些目錄只能容許指定IP進行訪問(固然在PHP內部也能夠對指定的IP進行訪問控制)
location /img/
{
deny 192.168.1.25;
allow 192.168.1.70;
}
PS:有的時候指定IP段(192.168.1.25/192.168.1.125這種)進行指定訪問 會失效
nginx