青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長網

17站長網 首頁 網站 服務器 查看內容

Nginx處理請求時的匹配規(guī)則詳析

2022-10-15 09:50| 查看: 1330 |來源: 互聯(lián)網

nginx 在收到一條請求時將先通過 server_name 匹配一個 server, 然后使用 server 中的 location 繼續(xù)匹配. 匹配 server_name 在 nginx 中, server_name 決 ...

nginx 在收到一條請求時將先通過 server_name 匹配一個 server, 然后使用 server 中的 location 繼續(xù)匹配.

匹配 server_name

在 nginx 中, server_name 決定了當收到一個請求后哪一個 server 會被使用. nginx 會使用請求頭中的 Host 字段與 server_name 進行匹配. 定義 server_name 時可以使用 完全名稱、通配符名稱、正則表達式名稱, 它們的匹配順序如下:

  • 完全匹配

  • 前通配符匹配, 即 *.example.org

  • 后通配符匹配, 即 mail.*

  • 正則表達式匹配

如果沒有匹配到結果, 將會使用 default_server 進行處理, 如果沒有定義, 則第一個定義的為 default_server. 使用三個簡單的 server 作為例子, 讓他們監(jiān)聽 80 端口, server_name 分別設置為 *.org、*.net、*.com:

server {
 listen 80;
 server_name example.org www.example.org;
 return 401;
}

server {
 listen 80;
 server_name example.net www.example.net;
 return 402;
}

server {
 listen 80;
 server_name example.com www.example.com;
 return 403;
}

在上面的配置中, 默認的服務器為 第一個, 隨便訪問一個不存在的 server 將會返回 401. 不過可以使用 default_server 手動設置一個默認主機, default_server 設置在 listen 字段, 如下:

server {
 listen 80 default_server;
 server_name example.net www.example.net;
}

之后再匹配時, 未匹配到將會使用這個 server.

禁止訪問

如果想要禁止一個沒有攜帶 Host 字段的請求, 可以定義如下 server:

server {
 listen 80;
 server_name "";
 return 444;
}

server_name 定義為空字符串, 如果 Host 字段為空或不存在, 將會匹配到這個 server, 然后返回 404 狀態(tài)碼.

Nginx 的444 狀態(tài)比較特殊,如果返回 444 那么客戶端將不會收到服務端返回的信息,就像是網站無法連接一樣, 瀏覽器直接顯示 502. 但是如果使用反向代理, 還是顯示正常狀態(tài)碼

如果想要禁止訪問不存在的主機, 可以這樣定義:

server {
 listen 80 default_server;
 server_name _;
 return 444;
}

_ 在這里沒有任何特別含義, 因為一個域名中不會出現 _, 所以不會與任何真實的域名相同, 使用其他非法字符是相同的道理.

同時匹配 IP 和 server_name

現在來看一下對于監(jiān)聽不同 IP 和不同 server_name 混合使用時是如何處理的:

server {
 listen 192.168.1.1:80;
 server_name example.org www.example.org;
}

server {
 listen 192.168.1.1:80;
 server_name example.net www.example.net;
}

server {
 listen 192.168.1.2:80;
 server_name example.com www.example.com;
}

在這個配置中, nginx 首先匹配 IP, 匹配到后再匹配它們的 server_name, 如果沒有匹配到 server_name, 則使用到它們默認的 server. 舉個例子, 如果一個域名為 www.example.com 的請求來自 192.168.1.1:80. 但是監(jiān)聽 192.168.1.1:80 的 server 只有兩個, 這兩個都不能匹配 www.example.com, 那么就使用這兩個 server 中的默認主機, 由于沒有使用 defualt_server 定義監(jiān)聽, 所以默認為第一個即 www.example.org 這個 server. 當然你可以定義 defualt_server:

server {
 listen 192.168.1.1:80;
 server_name example.org www.example.org;
}

server {
 listen 192.168.1.1:80 default_server;
 server_name example.net www.example.net;
}

server {
 listen 192.168.1.2:80 default_server;
 server_name example.com www.example.com;
}

匹配 location

在 nginx 匹配到一個 server 后, 就會通過 location 繼續(xù)處理請求, 下面是一個示例:

server {
 listen 172.17.0.3:80;
 server_name _;

 location / {
 return 401;
 }

 location ~*\.(gif|jpg|png)$ {
 return 402;
 }
 
 location ~*\.(gif|jpg|png)$ {
 return 404;
 }

 location /api {
 return 403;
 }
}

nginx 首先會在所有的 location 中搜索 前綴進行匹配, 匹配到前綴后, 將按順序匹配使用 正則表達式 定義的 location, 匹配到就結束, 如果沒有匹配到, 則使用之前匹配到前綴的那個 location 進行處理, 下面是具體匹配的例子:

  • 一個 /x.gif 請求, 首先匹配到的前綴為 /, 然后使用剩下的 x.gif 跟 location 的正則去匹配, 先匹配到了 location ~*\.(gif|jpg|png)$, 返回 402.

  • 一個 /x.pdf 請求, 由于 x.pdf 無法被匹配到, 所以使用 location / 進行處理.

  • 一個 /api/x.gif, 首先匹配到前綴為 /api, 然后使用剩下的 x.gif 跟 location 的正則去匹配, 先匹配到了 location ~*\.(gif|jpg|png)$, 返回 402.

  • 一個 /api/x.pdf 請求, 由于 x.pdf 無法被匹配到, 所以使用 location /api 進行處理.


    總結

    以上所述是小編給大家介紹的Nginx處理請求時的匹配規(guī)則詳析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對17站長網的支持!

    本文最后更新于 2022-10-15 09:50,某些文章具有時效性,若有錯誤或已失效,請在網站留言或聯(lián)系站長:[email protected]
    ·END·
    站長網微信號:w17tui,關注站長、創(chuàng)業(yè)、關注互聯(lián)網人 - 互聯(lián)網創(chuàng)業(yè)者營銷服務中心

    免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業(yè)用途,如果損害了您的權利,請聯(lián)系我們及時修正或刪除。謝謝!

    17站長網微信二維碼

    始終以前瞻性的眼光聚焦站長、創(chuàng)業(yè)、互聯(lián)網等領域,為您提供最新最全的互聯(lián)網資訊,幫助站長轉型升級,為互聯(lián)網創(chuàng)業(yè)者提供更加優(yōu)質的創(chuàng)業(yè)信息和品牌營銷服務,與站長一起進步!讓互聯(lián)網創(chuàng)業(yè)者不再孤獨!

    掃一掃,關注站長網微信

    大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 97视频国产 | FREE性丰满HD毛多多 | 久久这里只有精品视频9 | 护士们的母狗 | 最近的中文字幕免费完整 | 翘臀后进美女白嫩屁股视频 | 色欲AV久久综合人妻蜜桃 | 高干紧射H后入 | 乳色吐息未增删樱花ED在线观看 | 区一区二视频免费观看 | 国产99对白在线播放 | 欧美xxxxx九色视频免费观看 | 小鸟酱喷水 | 国产99久久久欧美黑人刘玥 | 999精品免费视频 | 黑人特黄AA完整性大片 | 性欧美videosex18嫩 | GAY空少被体育生开菊 | 伊人久久大香线蕉综合高清 | 成人啪啪色婷婷久色社区 | 免费在线视频一区 | 超碰97人在线视频 | 日本红怡院亚洲红怡院最新 | 国产精品婷婷五月久久久久 | 久久re亚洲在线视频 | 水蜜桃亚洲一二三四在线 | 久久精品男人影院 | www色小姐| 疯狂做受XXXX高潮欧美日本 | 日本wwwxx| 一本道在线综合久久88 | 色综合久久中文色婷婷 | 亚洲精品AV中文字幕在线 | 冠希和阿娇13分钟在线视频 | 男生射女生| 视频一区二区三区蜜桃麻豆 | 亚洲 欧美 国产在线视频 | 中文字幕人成人乱码亚洲影视 | YELLOW高清视频免费观看 | 无码国产成人777爽死在线观看 | 亚洲黄色免费在线观看 |