location [=|~|~*|^~|@] /uri/ { … }php
~ 正則匹配css
~* 正則匹配且不區分大小寫html
= 非正則匹配,執行普通匹配,遵照 嚴格匹配(徹底同樣)nginx
^~ 非正則匹配,執行普通匹配,遵照 最大前綴(前綴同樣便可,有多個選擇最大前綴匹配的)web
通常狀況 普通匹配後 若是正則匹配成功 則覆蓋普通匹配,除非使用 = 或者 ^~ 亦或者隱含的精確匹配 segmentfault
eg1
a) location /a/b/c.html{} (特殊狀況 屬於最大前綴匹配的精確匹配)
b) location /a/{}
c) location ~ \.html${}
> GET /a/c.html 會匹配到 c)
> GET /a/b/c.html 會匹配到 a)後端
因此匹配優先級tomcat
(=) > (完整路徑) > (^~ 路徑) > (~,~* 正則順序) > (部分起始路徑) > (/)服務器
建議配置(轉載 http://www.javashuo.com/article/p-rfvnylnv-z.html)框架
#直接匹配網站根,經過域名訪問網站首頁比較頻繁,使用這個會加速處理,官網如是說。 #這裏是直接轉發給後端應用服務器了,也能夠是一個靜態首頁 # 第一個必選規則 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/ }
==============================================================================
proxy_pass http://localhost:8080$request_uri
被代理服務器的URL
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
以上三行,目的是將代理服務器收到的用戶的信息傳到真實服務器上
===============================================================================
靜態資源配置的時候
location ~* /blog/img { root /usr; } #這個location 會將 匹配/blog/img路徑的請求,指定到 /usr/blog/img/... 文件 #此處需注意靜態資源訪問,須要nginx所屬用戶、用戶組有權限