nginx rewrite 常見設置

因爲但願服務器路徑不被訪問所知道,因此作了僞靜態php

 

if ($host ~* ^([^\.]+)\.([^\.]+\.[^\.]+)$)  {正則表達式

}   #這個是域名的一個規則,經過這個規則把域名分爲二段分組,這樣就能夠取出第一個分組(獲取二級域名)服務器

 

 

              在server塊下,會優先執行rewrite部分,而後纔會去匹配location塊

              server中的rewrite break和last沒什麼區別,都會去匹配location,因此不必用last再發起新的請求,能夠留空



location中的rewirte:



              不寫last和break     那麼流程就是依次執行這些rewrite

              rewrite break         url重寫後,直接使用當前資源,再也不執行location裏餘下的語句,完成本次請求,地址欄url不變

              rewrite last           url重寫後,立刻發起一個新的請求,再次進入server塊,重試location匹配,超過10次匹配不到報500錯誤,地址欄url不變

              rewrite redirect       返回302臨時重定向,地址欄顯示重定向後的url,爬蟲不會更新url(由於是臨時)

              rewrite permanent     返回301永久重定向, 地址欄顯示重定向後的url,爬蟲更新url

.

              使用last會對server標籤從新發起請求

              若是location中rewrite後是對靜態資源的請求,不須要再進行其餘匹配,通常要使用break或不寫,直接使用當前location中的數據源,完成本次請求

              若是location中rewrite後,還須要進行其餘處理,如動態fastcgi請求(.php,.jsp)等,要用last繼續發起新的請求

              (根的location使用last比較好, 由於若是有.php等fastcgi請求還要繼續處理)
~      爲區分大小寫的匹配。

~*     不區分大小寫的匹配(匹配firefox的正則同時匹配FireFox)。

!~     不匹配的

!~*    不匹配的

.     匹配除換行符之外的任意字符

\w     匹配字母或數字或下劃線或漢字

\s     匹配任意的空白符

\d     匹配數字

\b     匹配單詞的開始或結束

^     匹配字符串的開始

$     匹配字符串的結束

*     重複零次或更屢次

+     重複一次或更屢次
\W     匹配任意不是字母,數字,下劃線,漢字的字符

\S     匹配任意不是空白符的字符

\D     匹配任意非數字的字符

\B     匹配不是單詞開頭或結束的位置

[^x]     匹配除了x之外的任意字符

[^aeiou]     匹配除了aeiou這幾個字母之外的任意字符



捕獲     (exp)     匹配exp,並捕獲文本到自動命名的組裏

(?<name>exp)     匹配exp,並捕獲文本到名稱爲name的組裏,也能夠寫成(?'name'exp)

(?:exp)     匹配exp,不捕獲匹配的文本,也不給此分組分配組號

零寬斷言     (?=exp)     匹配exp前面的位置

(?<=exp)     匹配exp後面的位置

(?!exp)     匹配後面跟的不是exp的位置

(?<!exp)     匹配前面不是exp的位置

註釋     (?#comment)     這種類型的分組不對正則表達式的處理產生任何影響,用於提供註釋讓人閱讀


當一個域名內容url須要訪問另外一個域名url內容,並且還想返回到瀏覽的狀態爲200,這時候下面的方法就能夠解決了

location ^~ /xxx/dangan_search {
proxy_pass http://www.xxx.com/$uri$is_args$args;
}jsp

location ^~ /xxx/exponent {
proxy_pass http://www.xxx.com/$uri$is_args$args;
}url

相關文章
相關標籤/搜索