Nginx rewrite 規則 與 proxy_pass 實現html
------------------------------------------------------------------------------------------------------
~ 大小寫敏感匹配
~* 大小寫不敏感匹配
!~ 大小寫敏感不匹配
!~* 大小寫不敏感不匹配
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
-f 檢測文件存在
-d 檢測目錄存在
-e 檢測文件,目錄或者符號連接存在
-x 檢測文件可執行
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
break – 中止rewrite檢測,也就是說當含有break flag的rewrite語句被執行時,該語句就是rewrite的最終結果。
last – 中止rewrite檢測,可是跟break有本質的不一樣,last的語句不必定是最終結果。
redirect – 返回302臨時重定向,通常用於重定向到完整的URL(包含http:部分)
permanent – 返回301永久重定向,通常用於重定向到完整的URL(包含http:部分)
------------------------------------------------------------------------------------------------------
一些實際例子
if($http_host = www.qq.com)
{
rewrite (.*) http://www.baidu.com$1 permanent;
}
// 若是請求的url是 www.qq.com 則永久重定向到 www.baidu.comgit
rewrite ^/([0-9]+).html$ /user/id=$1 last;
// 若是 www.qq.com/user/id=123456 則顯示爲 www.qq.com/123456.htmlsvn
location ^~ /qq/
{
proxy_pass http://www.qq.com/;
}
//若是請求目錄爲 /qq/ 則代理到 www.qq.com 若是www.qq.com/qq/ 則代理到 www.qq.compost
location ~ ^/data
{
deny all;
}
// 禁止 data 目錄下全部文件的請求url
if (!-f $request_filename)
{
break;
proxy_pass http://www.qq.com;
}
// 若是請求的文件名不存在 則代理到 www.qq.comspa
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
// 若是請求的目錄存在 則自動增長 / 符號 代理
禁止訪問 /svn/ git cvs 這幾個目錄...防止 svn 文件下載··源碼泄漏code
location ~ .*\.(svn|git|cvs)htm
{blog
deny all;
}