詳解Nginx如何根據(jù)swagger關(guān)鍵字屏蔽頁(yè)面
一、知識(shí)回顧
1.什么是 location
Nginx 中通過(guò)根據(jù) location
塊的規(guī)則來(lái)將匹配到的 URL 請(qǐng)求進(jìn)行一系列操作,最常見的就是進(jìn)行代理。Nginx 中一個(gè) Server 可以有多個(gè) location 配置,當(dāng)請(qǐng)求在與多個(gè) location 匹配時(shí),會(huì)根據(jù)一定的 location 匹配規(guī)則和優(yōu)先級(jí)來(lái)確定具體將請(qǐng)求分發(fā)到哪個(gè) location。
2.location 語(yǔ)法
# |指令| |前綴| |匹配的網(wǎng)站網(wǎng)址| |匹配URI之后要執(zhí)行的配置段| location [=|^~|~|~*] /uri/ { ... }
3.location 的匹配規(guī)則
匹配規(guī)則 | 說(shuō)明 |
---|---|
沒(méi)有前綴 | 普通匹配(遵循最大前綴匹配規(guī)則)。 |
= | 精確(嚴(yán)格)匹配。 |
~ | 區(qū)分大小寫的正則匹配。 |
~* | 不區(qū)分大小寫的正則匹配。 |
^~ | 匹配 URI 以某個(gè)常規(guī)字符串開頭,^ 為正則表達(dá)式中的開頭。 |
!~ | 區(qū)分大小寫不匹配的正則。 |
!~* | 不區(qū)分大小寫不匹配的正則。 |
/ | 通用匹配,任何請(qǐng)求都會(huì)匹配到。 |
由此我們可以根據(jù)是否按照正則匹配將 location 的匹配規(guī)則劃分為兩類:
- 普通location: 包括
沒(méi)有前綴
、=
、^~
、@
四種。其中@
時(shí)用作服務(wù)內(nèi)部的一種轉(zhuǎn)發(fā)行為,很少用。 - 正則location: 包括
~
、~*
、!~
、!~*
四種。
4.優(yōu)先級(jí)排序
具體的匹配順序生效規(guī)則如下:
- 普通 location 與正則 location 之間的匹配:選擇出 “普通 location” 的最大前綴匹配結(jié)果后,還需要繼續(xù)搜索正則 location。如果繼續(xù)搜索的 “正則 location” 也有匹配上的,那么 “正則 location” 覆蓋 “普通 location” 的最大前綴匹配。
- 普通 location 之間:最大前綴匹配。
- 正則 location 之間:按照正則 location 在配置文件中的物理順序(編輯順序)匹配,并且只要匹配到一條正則 location,就不再考慮后面的。
- 以上 “普通 location” 指的是 沒(méi)有前綴 和 @,= 和 ^~ 在匹配到結(jié)果后就不再需要繼續(xù)匹配 “正則 location” 了(^ 表示 “非”,~ 表示 “正則”,字符意思是:不要繼續(xù)匹配正則)。
- = 和 ^~ 共同點(diǎn):都可以阻止繼續(xù)匹配 “正則 location”。
- = 和 ^~ 不同點(diǎn):^~ 依然遵守 “最大前綴” 匹配規(guī)則,然而 = 不是 “最大前綴”,而是必須是嚴(yán)格匹配(exact match)。
所有類型location存在時(shí),優(yōu)先級(jí)排序?yàn)椋?/p>
=
匹配 > ^~
匹配(不是用正則,最大前綴匹配) > 正則匹配 > 沒(méi)有前綴(最大前綴匹配) > 默認(rèn)(/)
location / {} 和 location = / {} 的區(qū)別:
- location / {} 遵守普通 location 的最大前綴匹配,由于任何 URI 都必然以 / 根開頭,所以對(duì)于一個(gè) URI,如果有更 specific 的匹配,那自然是選這個(gè)更 specific 的,如果沒(méi)有,/ 一定能為這個(gè) URI 點(diǎn)背(至少能匹配到 /)。也就是說(shuō),location / {} 有默認(rèn)配置的意思,其他更 specific 的配置能 orverwrite 這個(gè)默認(rèn)配置(這也是為什么我們總能看到 location / {} 這個(gè)配置的原因)。
- location = / {} 遵守的是 “嚴(yán)格精確匹配 exact match”,也就是只能匹配 http://host:port/ 請(qǐng)求,同時(shí)會(huì)禁止繼續(xù)搜索正則 location。因此如果我們只想對(duì) “GET /” 請(qǐng)求配置作用指令,那么我們可以選 location = / {},這樣能減少正則 location 的搜索,因此效率比 location / {} 高(注:前提是我們的目的僅僅只想對(duì) “GET /” 起作用)。
二、如何根據(jù)關(guān)鍵字篩選請(qǐng)求
1.實(shí)現(xiàn)方案
可以利用以下四種匹配規(guī)則實(shí)現(xiàn):
匹配規(guī)則 | 說(shuō)明 |
---|---|
~ | 區(qū)分大小寫的正則匹配。 |
~* | 不區(qū)分大小寫的正則匹配。 |
!~ | 區(qū)分大小寫不匹配的正則。 |
!~* | 不區(qū)分大小寫不匹配的正則。 |
例如,我想根據(jù) swagger 關(guān)鍵字進(jìn)行篩選,將帶有 swagger 的請(qǐng)求全部攔截,我們可以這么實(shí)現(xiàn):
location ~* swagger { return 404; }
2.測(cè)試結(jié)果
訪問(wèn)地址:http://localhost:8081/swagger-ui.html
整理完畢!
參考地址:
1.Nginx之location匹配規(guī)則,https://www.cnblogs.com/gaoyanbing/p/16915446.html
到此這篇關(guān)于詳解Nginx如何根據(jù)swagger關(guān)鍵字屏蔽頁(yè)面的文章就介紹到這了,更多相關(guān)Nginx swagger屏蔽頁(yè)面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
樹莓派如何搭建web服務(wù)器(nginx?+php?+?mysql?+?vsftpd?+phpmyadmin)
本文介紹如何使用樹莓派搭建Web服務(wù)器,包括安裝Nginx、PHP、MySQL、ftp和phpMyAdmin,步驟詳盡,涵蓋不同架構(gòu)的PHP安裝,提供了配置MySQL遠(yuǎn)程訪問(wèn)和管理數(shù)據(jù)庫(kù)的方法,是搭建個(gè)人Web服務(wù)器的實(shí)用指南2024-11-11nginx日志中添加請(qǐng)求的response日志(推薦)
這篇文章主要介紹了nginx日志中添加請(qǐng)求的response日志,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05nginx?http?499錯(cuò)誤碼詳解以及解決辦法
HTTP狀態(tài)碼出現(xiàn)499錯(cuò)誤有多種情況,499錯(cuò)誤是什么?這篇文章主要給大家介紹了關(guān)于nginx?http?499錯(cuò)誤碼以及解決辦法的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01Nginx為已安裝nginx動(dòng)態(tài)添加模塊
本篇文章主要介紹了Nginx之為已安裝nginx動(dòng)態(tài)添加模塊的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04解決Nginx無(wú)法啟動(dòng) -10013: An attempt was
這篇文章主要給大家介紹了解決用nginx -t 發(fā)成Nginx無(wú)法啟動(dòng)報(bào)錯(cuò)10013: An attempt was made to access a socket in a way forbidden by its access permissions的問(wèn)題,需要的朋友可以參考下2023-11-11windows下快速安裝nginx并配置開機(jī)自啟動(dòng)的方法
這篇文章主要介紹了windows下快速安裝nginx 并配置開機(jī)自啟動(dòng)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05Nginx中的用戶認(rèn)證配置及阻止用戶使用代理訪問(wèn)的方法
這篇文章主要介紹了Nginx中的用戶認(rèn)證配置及阻止用戶使用代理訪問(wèn)的方法,用戶認(rèn)證部分用到了自帶的ngx_http_auth_basic_module模塊,需要的朋友可以參考下2016-01-01Nginx配置origin限制跨域請(qǐng)求的詳細(xì)過(guò)程
這篇文章主要介紹了Nginx配置origin限制跨域請(qǐng)求的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06