Nginx學習筆記——location

配置詳解

location語法

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/
}

==============================================================================

location內部配置(有待補充)

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;
以上三行,目的是將代理服務器收到的用戶的信息傳到真實服務器上

===============================================================================

最近遇到的問題(20160920)

靜態資源配置的時候

location ~* /blog/img {
	root	/usr;
}
#這個location 會將 匹配/blog/img路徑的請求,指定到 /usr/blog/img/... 文件
#此處需注意靜態資源訪問,須要nginx所屬用戶、用戶組有權限
相關文章
相關標籤/搜索