因爲但願服務器路徑不被訪問所知道,因此作了僞靜態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