0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Nginx軟件location目錄匹配詳解

馬哥Linux運(yùn)維 ? 來源:博客園 ? 作者:lvzhenjiang ? 2021-10-08 17:10 ? 次閱讀

Nginx作為一個(gè)輕量級的,高性能的web服務(wù)軟件,因其占有內(nèi)存少,并發(fā)能力強(qiáng)的特點(diǎn),而廣受歡迎和使用。國內(nèi)很多大型互聯(lián)網(wǎng)公司也對Nginx很是青睞。

像BAT(百度,阿里和騰訊),TMD(頭條,美團(tuán)和滴滴)等等。使用過Nginx的同學(xué)都知道,你只需要按需求準(zhǔn)確的更改好配置啟動(dòng),那么就可以優(yōu)雅的訪問它了。

所以說Nginx對配置文件的很是看中呢,這就要求我們更改配置文件時(shí)一定要再三確認(rèn),要不然可能因?yàn)槭韬龆l(fā)慘案呢?

真實(shí)案例,就因?yàn)樵谂渲脮r(shí),少些了一個(gè)字符“/”,就造成訪問不通報(bào)錯(cuò),因而接到投訴。那么是怎么引起的呢?原因就是:Nginx在配置proxy_pass代理轉(zhuǎn)接時(shí),少些“/”字符造成的。有同學(xué)就有疑問,加不加“/”,區(qū)別真的那么大嗎?我們帶著這個(gè)疑問,來探究下這個(gè)問題。

location目錄匹配詳解

nginx每個(gè)location都是一個(gè)匹配目錄,nginx的策略是:訪問請求來時(shí),會(huì)對訪問地址進(jìn)行解析,從上到下逐個(gè)匹配,匹配上就執(zhí)行對應(yīng)location大括號中的策略,并根據(jù)策略對請求作出相應(yīng)。依訪問地址: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; }

那訪問時(shí)就會(huì)匹配這個(gè)location,從而把請求代理轉(zhuǎn)發(fā)到本機(jī)的8080Tomcat服務(wù)中,Tomcat相應(yīng)后,信息原路返回??偨Y(jié):location如果沒有“/”時(shí),請求就可以模糊匹配以字符串開頭的所有字符串,而有“/”時(shí),只能精確匹配字符本身。

下面舉個(gè)例子說明:配置location /wandou可以匹配/wandoudouduo請求,也可以匹配/wandou*/duoduo等等,只要以wandou開頭的目錄都可以匹配到。而location /wandou/必須精確匹配/wandou/這個(gè)目錄的請求,不能匹配/wandouduoduo/或/wandou*/duoduo等請求。

proxy_pass有無“/”的四種區(qū)別探究

訪問地址都是以:http://www.wandouduoduo.com/wddd/index.html 為例。請求都匹配目錄/wddd/

第一種:加“/”

location /wddd/ { proxy_pass http://127.0.0.1:8080/; }

測試結(jié)果,請求被代理跳轉(zhuǎn)到:http://127.0.0.1:8080/index.html

第二種: 不加“/”

location /wddd/ { proxy_pass http://127.0.0.1:8080; }

測試結(jié)果,請求被代理跳轉(zhuǎn)到:http://127.0.0.1:8080/wddd/index.html

第三種: 增加目錄加“/”

location /wddd/ { proxy_pass http://127.0.0.1:8080/sun/; }

測試結(jié)果,請求被代理跳轉(zhuǎn)到:http://127.0.0.1:8080/sun/index.html

第四種:增加目錄不加“/”

location /wddd/ { proxy_pass http://127.0.0.1:8080/sun; }

測試結(jié)果,請求被代理跳轉(zhuǎn)到:http://127.0.0.1:8080/sunindex.html

總結(jié)

location目錄后加“/”,只能匹配目錄,不加“/”不僅可以匹配目錄還對目錄進(jìn)行模糊匹配。而proxy_pass無論加不加“/”,代理跳轉(zhuǎn)地址都直接拼接。為了加深大家印象可以用下面的配置實(shí)驗(yàn)測試下:

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,請注意這里的雙斜線,好好分析一下。 location /wddd04 { proxy_pass http://localhost:8080/;

} # http://localhost/wddd05/xxx -》 http://localhost:8080/hahaxxx,請注意這里的haha和xxx之間沒有斜杠,分析一下原因。 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,請注意這里的雙斜杠。 location /wddd08 { proxy_pass http://localhost:8080/haha/; } }

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1255

    瀏覽量

    69294
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    4707

    瀏覽量

    87091
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    142

    瀏覽量

    12154

原文標(biāo)題:總結(jié)

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    nginx負(fù)載均衡配置介紹

    目錄 nginx負(fù)載均衡 nginx負(fù)載均衡介紹 反向代理與負(fù)載均衡 nginx負(fù)載均衡配置 Keepalived高可用nginx負(fù)載均衡器
    的頭像 發(fā)表于 11-10 13:39 ?99次閱讀
    <b class='flag-5'>nginx</b>負(fù)載均衡配置介紹

    nginx中的正則表達(dá)式和location路徑匹配指南

    前言,我這里驗(yàn)證的nginx-v1.23.2單機(jī)環(huán)境下的nginx中的正則表達(dá)式、location路徑匹配規(guī)則和優(yōu)先級。
    的頭像 發(fā)表于 09-29 16:02 ?338次閱讀
    <b class='flag-5'>nginx</b>中的正則表達(dá)式和<b class='flag-5'>location</b>路徑<b class='flag-5'>匹配</b>指南

    Jtti:美國VPS開啟nginx狀態(tài)監(jiān)控,查看web服務(wù)器的并發(fā)連接數(shù)

    |htaccess|asp|aspx|jsp|asa|mdb)$ { deny all; }location ~ ^/Nginxstatus/ {stub_status on;access_log off;}上面的代碼紅色部分為nginx的監(jiān)控代?。 2、重
    的頭像 發(fā)表于 08-26 15:42 ?208次閱讀

    nginx重啟命令linux步驟是什么?

      1、驗(yàn)證nginx配置文件是否正確   方法一:進(jìn)入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示nginx
    發(fā)表于 07-11 17:13

    nginx重啟命令linux步驟是什么?

      1、驗(yàn)證nginx配置文件是否正確   方法一:進(jìn)入nginx安裝目錄sbin下,輸入命令./nginx -t   看到如下顯示nginx
    發(fā)表于 07-10 16:40

    RT-Thread專業(yè)版入選《2023年上海市工業(yè)軟件推薦目錄

    在推進(jìn)制造業(yè)數(shù)字化轉(zhuǎn)型的關(guān)鍵時(shí)刻,上海市發(fā)布了《2023年上海市工業(yè)軟件推薦目錄》,旨在落實(shí)《上海市促進(jìn)工業(yè)軟件高質(zhì)量發(fā)展行動(dòng)計(jì)劃(2021-2023年)》,聚焦重點(diǎn)行業(yè)和領(lǐng)域痛點(diǎn)問題,提升關(guān)鍵
    的頭像 發(fā)表于 04-02 08:34 ?402次閱讀
    RT-Thread專業(yè)版入選《2023年上海市工業(yè)<b class='flag-5'>軟件</b>推薦<b class='flag-5'>目錄</b>》

    芯和ChannelExpert高速通道分析軟件入選2023工業(yè)軟件推薦目錄

    繼2022年三款EDA產(chǎn)品入選工業(yè)軟件推薦目錄之后,芯和半導(dǎo)體又一款EDA——ChannelExpert高速通道分析軟件也成功入選了2023年上海市工業(yè)軟件推薦
    的頭像 發(fā)表于 03-14 17:22 ?492次閱讀
    芯和ChannelExpert高速通道分析<b class='flag-5'>軟件</b>入選2023工業(yè)<b class='flag-5'>軟件</b>推薦<b class='flag-5'>目錄</b>

    積鼎科技兩款國產(chǎn)流體仿真軟件入選《上海市工業(yè)軟件推廣目錄》!

    ,《2023年上海市工業(yè)軟件推薦目錄》正式發(fā)布。 由積鼎科技自主研發(fā)的多介質(zhì)多相流分析軟件成功入選。由此,積鼎科技的兩款核心產(chǎn)品, 通用流體仿真軟件和多介質(zhì)多相流分析
    的頭像 發(fā)表于 03-08 16:07 ?373次閱讀

    Apache服務(wù)器和Nginx服務(wù)器

    Apache和Nginx都是常見的開源Web服務(wù)器軟件,它們用于處理HTTP請求并提供網(wǎng)站和應(yīng)用程序的服務(wù)。下面是對Apache和Nginx的一些基本特點(diǎn)的比較: 一、Apache HTTP
    的頭像 發(fā)表于 01-22 16:48 ?499次閱讀

    【愛芯派?Pro?開發(fā)板試用體驗(yàn)】實(shí)現(xiàn)簡單視頻直播系統(tǒng)

    的openssl庫,安裝命令: sudo apt install libssl-dev 開放板上的其他軟件,可以用命令行安裝。 二、安裝nginx和http-flv模塊 2.1 nginx
    發(fā)表于 01-21 16:36

    騰訊云和華為云的ingress路徑匹配規(guī)則把我繞暈了

    本文主要調(diào)研了Tke的兩類ingress,分別是應(yīng)用型CLB和Nginx ingress Controller,這兩類ingress在頁面創(chuàng)建時(shí)均不支持選擇路徑匹配規(guī)則,而二者關(guān)于路徑匹配規(guī)則的實(shí)現(xiàn)
    的頭像 發(fā)表于 01-08 15:59 ?828次閱讀
    騰訊云和華為云的ingress路徑<b class='flag-5'>匹配</b>規(guī)則把我繞暈了

    Nginx在Windows/docker中的使用

    nginx 是一個(gè)高性能的開源反向代理服務(wù)器和 web 服務(wù)器,一般用來搭建靜態(tài)資源服務(wù)器、負(fù)載均衡器、反向代理,本文將分享其在 Windows/docker 中的使用,使用 nssm 部署成服務(wù)的方案腳本,局域網(wǎng)中自定義域名解決https提示不安全的解決方案,以及一路踩過的坑。
    的頭像 發(fā)表于 01-03 10:20 ?1716次閱讀
    <b class='flag-5'>Nginx</b>在Windows/docker中的使用

    OpenCV邊緣模板匹配算法原理詳解

    OpenCV中自帶的模板匹配算法,完全是像素基本的模板匹配,特別容易受到光照影響,光照稍微有所不同,該方法就會(huì)歇菜了!搞得很多OpenCV初學(xué)者剛學(xué)習(xí)到該方法時(shí)候很開心,一用該方法馬上很傷心
    的頭像 發(fā)表于 12-07 10:56 ?1289次閱讀
    OpenCV邊緣模板<b class='flag-5'>匹配</b>算法原理<b class='flag-5'>詳解</b>

    Nginx的配置文件如何設(shè)置頭信息保留真實(shí)IP不丟失

    Nginx 配置中設(shè)置頭信息以保留客戶端的真實(shí) IP 地址通常是在使用反向代理的場景中需要的。當(dāng) Nginx 作為反向代理時(shí),客戶端的真實(shí) IP 地址可能會(huì)在轉(zhuǎn)發(fā)請求時(shí)丟失,因?yàn)榈竭_(dá)應(yīng)用服務(wù)器
    的頭像 發(fā)表于 11-30 10:54 ?1818次閱讀

    在應(yīng)用層nginx的處理流程

    數(shù)據(jù)包從網(wǎng)卡到nginx 本文將研究一個(gè)數(shù)據(jù)包從被網(wǎng)卡接收到流出應(yīng)用層到底經(jīng)歷了什么,并探究在應(yīng)用層nginx的處理流程。**注:**本文只討論物理網(wǎng)卡,暫不涉及虛擬網(wǎng)卡。 從網(wǎng)卡到內(nèi)存 1
    的頭像 發(fā)表于 11-13 14:44 ?478次閱讀
    在應(yīng)用層<b class='flag-5'>nginx</b>的處理流程