【译】nginx关于location部分
譯:
| Default: | — |
| Context: | server,?location |
依據(jù)請(qǐng)求的URI進(jìn)行配置。
在對(duì)以"%xx"形式的文本解碼,對(duì)相對(duì)路徑".“和”…"的格式化和兩個(gè)或多個(gè)相鄰斜杠壓縮為單個(gè)斜杠后的規(guī)范URI執(zhí)行匹配。
一個(gè)location可以被定義為一個(gè)前綴字符串或者一個(gè)正則表達(dá)式。正則表達(dá)式通過(guò)前綴"*"(忽略大小寫)或者""(大小寫敏感)修飾,在這些位置中,最長(zhǎng)前綴字符串匹配的location會(huì)被選中和記住。然后會(huì)按照正則表達(dá)式在配置文件中出現(xiàn)的順序進(jìn)行正則表達(dá)式的匹配。在第一個(gè)正則表達(dá)式匹配上就會(huì)終止,并且相應(yīng)的配置會(huì)被使用。如果沒(méi)有匹配上正則表達(dá)式,前面記住的前綴字符串匹配的location的配置將會(huì)被使用。
location 塊是可以嵌套的,以下提到一些例外。
對(duì)于不區(qū)分大小寫的操作系統(tǒng)例如macOS和Cygwin,與前綴字符串匹配忽略大小寫。然而,比較被局限于一字節(jié)的環(huán)境。
正則表達(dá)式可以包含捕獲,捕獲的內(nèi)容可以被用在之后的其他指令中。
如果匹配的最長(zhǎng)的前綴字符串的location有“^~"修飾,之后的正則表達(dá)式檢查就不會(huì)進(jìn)行了。
使用"=“修飾是定義一個(gè)嚴(yán)格匹配的URI和location。如果匹配上一個(gè)嚴(yán)格模式,搜索就會(huì)終止。例如,如果一個(gè)”/"請(qǐng)求經(jīng)常發(fā)生,定義"location = /"將會(huì)快速處理這些請(qǐng)求。在第一個(gè)嚴(yán)格的location匹配上后就會(huì)終止搜索。這樣的location顯然不能包含嵌套location。
注:在0.7.1到0.8.41版本中,如果一個(gè)請(qǐng)求匹配了前綴字符串的location即使沒(méi)有"=“或者”^~"修飾,搜索也會(huì)停止并且正則表達(dá)式也不會(huì)檢查。
讓我們通過(guò)一個(gè)例子進(jìn)行說(shuō)明:
location = / {[ configuration A ] }location / {[ configuration B ] }location /documents/ {[ configuration C ] }location ^~ /images/ {[ configuration D ] }location ~* \.(gif|jpg|jpeg)$ {[ configuration E ] }“/“請(qǐng)求將會(huì)匹配 configuration A,”/index.html"請(qǐng)求將會(huì)匹配configuration B,”/documents/document.html"請(qǐng)求將會(huì)匹配configuration C,"/images/1.gif"請(qǐng)求將會(huì)匹配configuration D,"/documents/1.jpg"請(qǐng)求將會(huì)匹配configuration E。
"@"前綴作為前綴定義的location。這樣的location不是用來(lái)處理常規(guī)請(qǐng)求的,而是用于請(qǐng)求重定向。它們也不能嵌套,也不能包含嵌套位置。
如果一個(gè)location通過(guò)前綴以斜杠結(jié)尾字符定義的,并且請(qǐng)求被 proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pass,memcached_pass或grpc_pass之一處理,然后會(huì)執(zhí)行特殊處理。在響應(yīng)一個(gè)請(qǐng)求的URI等這個(gè)字符串但是沒(méi)有斜杠,一個(gè)永久重定向的cod 301將會(huì)返回請(qǐng)求的URI并且?guī)闲备堋H绻幌脒@樣,一個(gè)嚴(yán)格匹配的URI和location可以像這樣定義:
location /user/ {proxy_pass http://user.example.com; }location = /user {proxy_pass http://login.example.com; }注意點(diǎn)
參考
nginx文檔locaiton部分
總結(jié)
以上是生活随笔為你收集整理的【译】nginx关于location部分的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ES6中块级作用域下的函数声明
- 下一篇: 关于页面布局间距使用的经验之谈