Nginx服務(wù)器的location指令匹配規(guī)則詳解
Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令,是用來(lái)為匹配的 URI 進(jìn)行配置,URI 即語(yǔ)法中的”/uri/”,可以是字符串或正則表達(dá)式。但如果要使用正則表達(dá)式,則必須指定前綴。
nginx location語(yǔ)法
基本語(yǔ)法:location [=|~|~*|^~] /uri/ { … }
- = 嚴(yán)格匹配。如果這個(gè)查詢(xún)匹配,那么將停止搜索并立即處理此請(qǐng)求。
- ~ 為區(qū)分大小寫(xiě)匹配(可用正則表達(dá)式)
- ~* 為不區(qū)分大小寫(xiě)匹配(可用正則表達(dá)式)
- !~和!~*分別為區(qū)分大小寫(xiě)不匹配及不區(qū)分大小寫(xiě)不匹配
- ^~ 如果把這個(gè)前綴用于一個(gè)常規(guī)字符串,那么告訴nginx 如果路徑匹配那么不測(cè)試正則表達(dá)式。
Location語(yǔ)法語(yǔ)法:location [=|~|~*|^~] /uri/ { … }
注:
1、~ 為區(qū)分大小寫(xiě)匹配
2、~* 為不區(qū)分大小寫(xiě)匹配
3、!~和!~*分別為區(qū)分大小寫(xiě)不匹配及不區(qū)分大小寫(xiě)不匹配
例子:
location = / { # matches the query / only. # 只匹配 / 查詢(xún)。 [ configuration A ] } location / { # matches any query, since all queries begin with /, but regular # expressions and any longer conventional blocks will be # matched first. # 匹配任何查詢(xún),因?yàn)樗姓?qǐng)求都已 / 開(kāi)頭。但是正則表達(dá)式規(guī)則和長(zhǎng)的塊規(guī)則將被優(yōu)先和查詢(xún)匹配。 [ configuration B ] } location ^~ /images/ { # matches any query beginning with /images/ and halts searching, # so regular expressions will not be checked. # 匹配任何已 /images/ 開(kāi)頭的任何查詢(xún)并且停止搜索。任何正則表達(dá)式將不會(huì)被測(cè)試。 [ configuration C ] } location ~* .(gif|jpg|jpeg)$ { # matches any request ending in gif, jpg, or jpeg. However, all # requests to the /images/ directory will be handled by # Configuration C. # 匹配任何已 gif、jpg 或 jpeg 結(jié)尾的請(qǐng)求。然而所有 /images/ 目錄的請(qǐng)求將使用 Configuration C。 [ configuration D ] }
我的添加模式,動(dòng)靜分離
location ^~ /(images|scripts|styles|upload)/ { root /www/abc.com/www/htdocs; expires 30d; } location ~*\.(gif|jpg|jpeg|png|css|ico|html)$ { root /www/abc.com/www/htdocs; expires 30d; }
如果要定義多個(gè)location,則可以有2種方式:
使用/ :location / { client_max_body_size 200m; proxy_connect_timeout 30; proxy_set_header Host $http_host; proxy_set_header x-forwarded-for $remote_addr; proxy_pass http://127.0.0.1:8008; } location /tmp/{ root /; internal; } 采用這種方式,/tmp可以放在/的下面,因?yàn)椤?是匹配任何查詢(xún),但是正則表達(dá)式規(guī)則和長(zhǎng)的塊規(guī)則將被優(yōu)先和查詢(xún)匹配”
使用~ /* : location ~ /tmp/ { root /tmp; internal; } location ~ /* { client_max_body_size 20m; proxy_connect_timeout 30; fastcgi_pass fpass; include fastcgi_params; } 采用這種方式,/tmp則必須放在~ /*這個(gè)前面,因?yàn)閪是正則匹配的,正則匹配是有順序的,只要匹配上就不會(huì)再往下匹配了。除非在conf中有定義=或者^(guò)~,也就是說(shuō)=和^~的優(yōu)先級(jí)最高,如果匹配上,就不會(huì)再去匹配其它的規(guī)則了。
- Nginx反向代理location和proxy_pass配置規(guī)則詳細(xì)總結(jié)
- Nginx的location的常見(jiàn)規(guī)則優(yōu)先級(jí)問(wèn)題
- nginx 配置location匹配規(guī)則實(shí)例講解
- Nginx Location指令URI匹配規(guī)則詳解小結(jié)
- Nginx location匹配規(guī)則的方法示例
- nginx配置location總結(jié)location正則寫(xiě)法及rewrite規(guī)則寫(xiě)法
- 詳解nginx配置location總結(jié)及rewrite規(guī)則寫(xiě)法
- 詳解Nginx location 匹配規(guī)則
- nginx中的路徑匹配location規(guī)則詳解
相關(guān)文章
Linux下Nginx負(fù)載均衡多個(gè)tomcat配置的方法步驟
這篇文章主要介紹了Linux下Nginx負(fù)載均衡多個(gè)tomcat配置的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04Nginx中配置過(guò)濾爬蟲(chóng)的User-Agent的簡(jiǎn)單方法
這篇文章主要介紹了Nginx中配置過(guò)濾爬蟲(chóng)的User-Agent的簡(jiǎn)單方法,文中羅列了一些常用搜索引擎的爬蟲(chóng)名稱(chēng)以免造成不必要的過(guò)濾,需要的朋友可以參考下2016-01-01比較完整的Nginx配置文件nginx.conf常用參數(shù)中文詳解
這篇文章主要介紹了比較完整的Nginx配置文件nginx.conf常用參數(shù)中文詳解,需要的朋友可以參考下2015-07-07Nginx訪問(wèn)控制與參數(shù)調(diào)優(yōu)的方法
這篇文章主要介紹了Nginx訪問(wèn)控制與參數(shù)調(diào)優(yōu)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03采用ngxtop實(shí)現(xiàn)nginx實(shí)時(shí)訪問(wèn)數(shù)據(jù)統(tǒng)計(jì)
這篇文章主要介紹了采用ngxtop實(shí)現(xiàn)nginx實(shí)時(shí)訪問(wèn)數(shù)據(jù)統(tǒng)計(jì),需要的朋友可以參考下2014-07-07nginx?搭建http-flv(rtmp)流媒體的方法步驟
本文主要介紹了nginx?搭建http-flv(rtmp)流媒體的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>2023-06-06Nginx配置多端口多域名訪問(wèn)的實(shí)現(xiàn)
這篇文章主要介紹了Nginx配置多端口多域名訪問(wèn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11