Nginx location

Nginx location php

location指令的做用是根據用戶請求的URI來執行不一樣的應用。URI即統一資源標識符(Uniform Resource Identifier),就是根據用戶請求的網站地址URL進行匹配,匹配成功即進行相關的操做。 css

一、語法規則 html

1.1.前綴+uri    [=|~|~*|^~] /uri/ { … } nginx

1.2.普通用法    location @name { ... } web

前綴含義 正則表達式

=    開頭表示精確匹配 後端

^~    開頭表示uri以某個常規字符串開頭,理解爲匹配 url路徑便可 tomcat

~*    開頭表示不區分大小寫的正則匹配 服務器

~    開頭表示區分大小寫的正則匹配(大小寫敏感) 框架

/     通用匹配,任何請求都會匹配到

注意:無符號和^~不能同時存在

二、location優先級

在nginx的location和配置中location的順序沒有太大關係。正location表達式的類型有關。相同類型的表達式,字符串長的會優先匹配

優先級排序:

"="大於"完整路徑"大於"^~"大於"~*"大於"~"

分別經過加註釋和取消註釋來測試優先級

 

三、location正則用法

參考:http://www.javashuo.com/article/p-qusigjmv-gg.html

location = / {

# 精確匹配 / ,主機名後面不能帶任何字符串

[ configuration A ]

}

location / {

# 由於全部的地址都以 / 開頭,因此這條規則將匹配到全部請求

# 可是正則和最長字符串會優先匹配

[ configuration B ]

}

location /documents/ {

# 匹配任何以 /documents/ 開頭的地址,匹配符合之後,還要繼續往下搜索

# 只有後面的正則表達式沒有匹配到時,這一條纔會採用這一條

[ configuration C ]

}

location ~ /documents/Abc {

# 匹配任何以 /documents/ 開頭的地址,匹配符合之後,還要繼續往下搜索

# 只有後面的正則表達式沒有匹配到時,這一條纔會採用這一條

[ configuration CC ]

}

location ^~ /images/ {

# 匹配任何以 /images/ 開頭的地址,匹配符合之後,中止往下搜索正則,採用這一條。

[ configuration D ]

}

location ~* \.(gif|jpg|jpeg)$ {

# 匹配全部以 gif,jpg或jpeg 結尾的請求

# 然而,全部請求 /images/ 下的圖片會被 config D 處理,由於 ^~ 到達不了這一條正則

[ configuration E ]

}

location /images/ {

# 字符匹配到 /images/,繼續往下,會發現 ^~ 存在

[ configuration F ]

}

location /images/abc {

# 最長字符匹配到 /images/abc,繼續往下,會發現 ^~ 存在

# F與G的放置順序是沒有關係的

[ configuration G ]

}

location ~ /images/abc/ {

# 只有去掉 config D 纔有效:先最長匹配 config G 開頭的地址,繼續往下搜索,匹配到這一條正則,採用

[ configuration H ]

}

location ~* /js/.*/\.js {

匹配站點根目錄/js/目錄後面以js結尾的內容,執行相關操做

}

location = /kaoshi/[0-9]+-[0-9]+-[0-9]/ {

匹配站點根目錄/kaoshi/目錄內容

autoindex off    #關閉瀏覽kaoshi目錄下以日期命名的文件,可是能瀏覽其餘內容

}

實際使用建議

因此實際使用中,我的以爲至少有三個匹配規則定義,以下:

#直接匹配網站根,經過域名訪問網站首頁比較頻繁,使用這個會加速處理,官網如是說。

#這裏是直接轉發給後端應用服務器了,也能夠是一個靜態首頁

# 第一個必選規則

location = / {

proxy_pass http://tomcat:8080/index

}

# 第二個必選規則是處理靜態文件請求,這是nginx做爲http服務器的強項

# 有兩種配置模式,目錄匹配或後綴匹配,任選其一或搭配使用

location ^~ /static/ {

root /webroot/static/;

}

location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {

root /webroot/res/;

}

#第三個規則就是通用規則,用來轉發動態請求到後端應用服務器

#非靜態文件請求就默認是動態請求,本身根據實際把握

#畢竟目前的一些框架的流行,帶.php,.jsp後綴的狀況不多了

location / {

proxy_pass http://tomcat:8080/

}

相關文章
相關標籤/搜索