亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

nginx location塊配置小結

 更新時間:2024年03月15日 16:53:31   作者:曹朋羽  
nginx可以通過配置文件中的location指令來定義不同的請求匹配規(guī)則和處理邏輯,也就是描述不同請求資源在服務器的位置或者配置代理轉發(fā)路徑,這篇文章主要介紹了nginx location塊配置,需要的朋友可以參考下

nginx可以通過配置文件中的location指令來定義不同的請求匹配規(guī)則和處理邏輯,也就是描述不同請求資源在服務器的位置或者配置代理轉發(fā)路徑。

location塊通常在server塊中,一個server塊可以包含多個location塊。

server {
  location {}
  location {}
}

語法規(guī)則

location [ = | ~ | ~* | ^~ ] uri { ... }

其中[]位置是設置匹配方式符號,有以下幾種情況

  • none: 字符串前綴匹配,會繼續(xù)往后進行正則匹配
  • =: 代表精確匹配,命中后立即結束返回
  • ~: 正則匹配,區(qū)分大小寫
  • ~*: 正則匹配,不區(qū)分大小寫
  • ^~: 最長非正則表達式匹配(字符串匹配)。如果請求的URI命中這樣的位置塊,則不會進行進一步的匹配

uri就是表示的資源路徑標識。

location配置既可以由前綴字符串定義,也可以由正則表達式定義。為了找到匹配給定請求的location,nginx首先檢查使用前綴字符串定義的位置(前綴匹配)。選擇匹配前綴最長的位置并記住。然后按照正則表達式在配置文件中的出現(xiàn)順序依次進行正則匹配。正則表達式的搜索在第一次匹配時終止,并使用相應的配置。如果沒有找到與正則表達式的匹配,則使用先前記住的前綴匹配的配置。

下面來依次看下對應的匹配

精確匹配

location = /test{
    return 200 "= /test";
}

這種方式訪問只匹配/test,訪問/test/1這種就會報404錯誤

前綴匹配

location /test{
    return 200 "/test";
}

這種可以匹配前綴進行匹配,像 /test-a,/test/a 都可以匹配到

正則匹配

在 location /test基礎上添加如下正則匹配

location ~ /test[0-9] {
    return 200 "reg[0-9]";
}

curl -i http://localhost/test1請求test1地址會落到該正則匹配地址,這個時候訪問/testa 會落到上面的前綴匹配location /test里。這也說名了前綴匹配不會直接結束,會繼續(xù)找下一個匹配的正則匹配,如果找到則訪問正則匹配的location,否則進入前綴匹配。

在前面的配置基礎上,再加一個正則配置location ~ /test*

location = /test{
    return 200 "= /test";
}
location /test{
    return 200 "/test";
}
location ~ /test[0-9] {
    add_header Content-Type "text/plain";
    return 200 "reg[0-9]";
}
location ~ /test* {
    return 200 "test*";
}

這個時候訪問/test1還是會進入/test[0-9]的配置,雖然后面的/test*也匹配,這里證明正則匹配只要匹配到一個后便立即結束。

正則匹配有兩種 location ~ 表示區(qū)分大小寫,location ~* 表示不區(qū)分大小寫。不區(qū)分大小寫這里就不演示了。

下面還有最后一種格式location ^~。這種也是字符串前綴匹配,不過這種區(qū)分于默認字符串匹配的方式是,如果當前l(fā)ocation ^~字符串前綴匹配,會立即結束,不會再繼續(xù)往下查找正則匹配。

還是搞個例子來看下,添加一個^~配置,此時配置如下:

location = /test {}
location /test {}
location ^~ /test1 {}
location ~ /test[0-9] {}
location ~ /test* {}

此時如果訪問/test1則會直接進入location ^~ /test1,雖然后面的正則匹配location ~ /test[0-9]也可以匹配,但是

先遇到location ^~ /test1匹配后就直接結束了。

配置location還有一點需要注意,nginx會檢查location規(guī)則不能重復。像location /test和location ^~ /test雖然規(guī)則符號不同,但是也被認為是相同的location。一般情況下會配置一個 location /來兜底所有的請求。正則匹配也是經(jīng)常用的一種配置方式,如location ~ .jpg$可以匹配所有的jpg圖片文件請求,location ~ ^/user/\d+可以匹配所有以/user/[用戶ID]開頭的請求。

優(yōu)惠劵

相關文章

最新評論