Nginx作為一個(gè)輕量級(jí)的,高性能的web服務(wù)軟件,因其占有內(nèi)存少,并發(fā)能力強(qiáng)的特點(diǎn),而廣受歡迎和使用。國(guó)內(nèi)很多大型互聯(lián)網(wǎng)公司也對(duì)Nginx很是青睞。
像BAT(百度,阿里和騰訊),TMD(頭條,美團(tuán)和滴滴)等等。使用過(guò)Nginx的同學(xué)都知道,你只需要按需求準(zhǔn)確的更改好配置啟動(dòng),那么就可以優(yōu)雅的訪問(wèn)它了。
所以說(shuō)Nginx對(duì)配置文件的很是看中呢,這就要求我們更改配置文件時(shí)一定要再三確認(rèn),要不然可能因?yàn)槭韬龆l(fā)慘案呢?
真實(shí)案例,就因?yàn)樵谂渲脮r(shí),少些了一個(gè)字符“/”,就造成訪問(wèn)不通報(bào)錯(cuò),因而接到投訴。那么是怎么引起的呢?原因就是:Nginx在配置proxy_pass代理轉(zhuǎn)接時(shí),少些“/”字符造成的。有同學(xué)就有疑問(wèn),加不加“/”,區(qū)別真的那么大嗎?我們帶著這個(gè)疑問(wèn),來(lái)探究下這個(gè)問(wèn)題。
location目錄匹配詳解
nginx每個(gè)location都是一個(gè)匹配目錄,nginx的策略是:訪問(wèn)請(qǐng)求來(lái)時(shí),會(huì)對(duì)訪問(wèn)地址進(jìn)行解析,從上到下逐個(gè)匹配,匹配上就執(zhí)行對(duì)應(yīng)location大括號(hào)中的策略,并根據(jù)策略對(duì)請(qǐng)求作出相應(yīng)。依訪問(wèn)地址:http://www.wandouduoduo.com/wddd/index.html為例,nginx配置如下:
location /wddd/ { proxy_connect_timeout 18000; ##修改成半個(gè)小時(shí) proxy_send_timeout 18000; proxy_read_timeout 18000; proxy_pass http://127.0.0.1:8080; }
那訪問(wèn)時(shí)就會(huì)匹配這個(gè)location,從而把請(qǐng)求代理轉(zhuǎn)發(fā)到本機(jī)的8080Tomcat服務(wù)中,Tomcat相應(yīng)后,信息原路返回。總結(jié):location如果沒(méi)有“/”時(shí),請(qǐng)求就可以模糊匹配以字符串開(kāi)頭的所有字符串,而有“/”時(shí),只能精確匹配字符本身。
下面舉個(gè)例子說(shuō)明:配置location /wandou可以匹配/wandoudouduo請(qǐng)求,也可以匹配/wandou*/duoduo等等,只要以wandou開(kāi)頭的目錄都可以匹配到。而location /wandou/必須精確匹配/wandou/這個(gè)目錄的請(qǐng)求,不能匹配/wandouduoduo/或/wandou*/duoduo等請(qǐng)求。
proxy_pass有無(wú)“/”的四種區(qū)別探究
訪問(wèn)地址都是以:http://www.wandouduoduo.com/wddd/index.html 為例。請(qǐng)求都匹配目錄/wddd/
第一種:加“/”
location /wddd/ { proxy_pass http://127.0.0.1:8080/; }
測(cè)試結(jié)果,請(qǐng)求被代理跳轉(zhuǎn)到:http://127.0.0.1:8080/index.html
第二種: 不加“/”
location /wddd/ { proxy_pass http://127.0.0.1:8080; }
測(cè)試結(jié)果,請(qǐng)求被代理跳轉(zhuǎn)到:http://127.0.0.1:8080/wddd/index.html
第三種: 增加目錄加“/”
location /wddd/ { proxy_pass http://127.0.0.1:8080/sun/; }
測(cè)試結(jié)果,請(qǐng)求被代理跳轉(zhuǎn)到:http://127.0.0.1:8080/sun/index.html
第四種:增加目錄不加“/”
location /wddd/ { proxy_pass http://127.0.0.1:8080/sun; }
測(cè)試結(jié)果,請(qǐng)求被代理跳轉(zhuǎn)到:http://127.0.0.1:8080/sunindex.html
總結(jié)
location目錄后加“/”,只能匹配目錄,不加“/”不僅可以匹配目錄還對(duì)目錄進(jìn)行模糊匹配。而proxy_pass無(wú)論加不加“/”,代理跳轉(zhuǎn)地址都直接拼接。為了加深大家印象可以用下面的配置實(shí)驗(yàn)測(cè)試下:
server { listen 80; server_name localhost; # http://localhost/wddd01/xxx -》 http://localhost:8080/wddd01/xxx location /wddd01/ { proxy_pass http://localhost:8080; } # http://localhost/wddd02/xxx -》 http://localhost:8080/xxx location /wddd02/ { proxy_pass http://localhost:8080/;
} # http://localhost/wddd03/xxx -》 http://localhost:8080/wddd03*/xxx location /wddd03 { proxy_pass http://localhost:8080;
} # http://localhost/wddd04/xxx -》 http://localhost:8080//xxx,請(qǐng)注意這里的雙斜線,好好分析一下。 location /wddd04 { proxy_pass http://localhost:8080/;
} # http://localhost/wddd05/xxx -》 http://localhost:8080/hahaxxx,請(qǐng)注意這里的haha和xxx之間沒(méi)有斜杠,分析一下原因。 location /wddd05/ { proxy_pass http://localhost:8080/haha;
} # http://localhost/api6/xxx -》 http://localhost:8080/haha/xxx location /wddd06/ { proxy_pass http://localhost:8080/haha/;
} # http://localhost/wddd07/xxx -》 http://localhost:8080/haha/xxx location /wddd07 { proxy_pass http://localhost:8080/haha; }
# http://localhost/wddd08/xxx -》 http://localhost:8080/haha//xxx,請(qǐng)注意這里的雙斜杠。 location /wddd08 { proxy_pass http://localhost:8080/haha/; } }
責(zé)任編輯:haq
-
Web
+關(guān)注
關(guān)注
2文章
1272瀏覽量
69760 -
軟件
+關(guān)注
關(guān)注
69文章
5028瀏覽量
88144 -
nginx
+關(guān)注
關(guān)注
0文章
154瀏覽量
12243
原文標(biāo)題:總結(jié)
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
華為 FlexusX 與 Docker+Nginx 的高效整合之路
![華為 FlexusX 與 Docker+<b class='flag-5'>Nginx</b> 的高效整合之路](https://file1.elecfans.com//web3/M00/04/7A/wKgZPGd0HLGANzOxAAEA43MSbXE681.png)
nginx+lua+redis實(shí)現(xiàn)灰度發(fā)布
Nginx代理轉(zhuǎn)發(fā)實(shí)戰(zhàn):零基礎(chǔ)掌握服務(wù)器流量分發(fā)技巧
詳解nginx中的正則表達(dá)式
![<b class='flag-5'>詳解</b><b class='flag-5'>nginx</b>中的正則表達(dá)式](https://file1.elecfans.com/web3/M00/00/D4/wKgZO2dOZpuAcWm-AAAh1LlPcxs614.png)
確保網(wǎng)站無(wú)縫運(yùn)行:Keepalived高可用與Nginx集成實(shí)戰(zhàn)
![確保網(wǎng)站無(wú)縫運(yùn)行:Keepalived高可用與<b class='flag-5'>Nginx</b>集成實(shí)戰(zhàn)](https://file1.elecfans.com/web3/M00/00/12/wKgZO2dGcZOAFKfHAABeakMUbaM263.png)
nginx隱藏版本號(hào)與WEB服務(wù)器信息
![<b class='flag-5'>nginx</b>隱藏版本號(hào)與WEB服務(wù)器信息](https://file1.elecfans.com/web2/M00/0C/2B/wKgZomc_7AmASNNGAAAhmLrsbJU982.png)
nginx負(fù)載均衡配置介紹
![<b class='flag-5'>nginx</b>負(fù)載均衡配置介紹](https://file1.elecfans.com/web1/M00/F4/AF/wKgZoWcwR1KAFNnbAAAYwR5LGfU815.png)
nginx中的正則表達(dá)式和location路徑匹配指南
![<b class='flag-5'>nginx</b>中的正則表達(dá)式和<b class='flag-5'>location</b>路徑<b class='flag-5'>匹配</b>指南](https://file1.elecfans.com/web2/M00/08/9C/wKgZomb5Cb2AbMf0AACDRywOs8w869.png)
Jtti:美國(guó)VPS開(kāi)啟nginx狀態(tài)監(jiān)控,查看web服務(wù)器的并發(fā)連接數(shù)
nginx重啟命令linux步驟是什么?
nginx重啟命令linux步驟是什么?
RT-Thread專業(yè)版入選《2023年上海市工業(yè)軟件推薦目錄》
![RT-Thread專業(yè)版入選《2023年上海市工業(yè)<b class='flag-5'>軟件</b>推薦<b class='flag-5'>目錄</b>》](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
芯和ChannelExpert高速通道分析軟件入選2023工業(yè)軟件推薦目錄
![芯和ChannelExpert高速通道分析<b class='flag-5'>軟件</b>入選2023工業(yè)<b class='flag-5'>軟件</b>推薦<b class='flag-5'>目錄</b>](https://file1.elecfans.com/web2/M00/C4/63/wKgZomXywjCAY0YVAAA8-86CdtY142.png)
評(píng)論