亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

深入理解Nginx中Server和Location的匹配邏輯

2024-08-30 12:30:18
字體:
來源:轉載
供稿:網友

Server的匹配邏輯

Nginx在決定請求由哪個server塊執行時,主要關注的是server塊中的listen和server_name兩個字段

listen指令

listen字段定義server響應的ip和端口,如果沒有明確配置listen字段,默認監聽0.0.0.0:80(root)或者0.0.0.0:8080(非root)

listen可以被配置為:

  1. 一個ip和端口的組合
  2. 一個單獨的ip,默認監聽80端口
  3. 一個單獨的端口,默認監聽所有的ip接口
  4. 一個Unix socket路徑

其中最后一項通常只用于在不同的server之間傳遞請求

選擇要使用的server的規則如下:

  1. Nginx首先將所有"不完整"的listen指令進行轉換,比如沒有listen字段的轉換為listen 0.0.0.0:80,listen 1.1.1.1轉換為listen 1.1.1.1:80等
  2. Nginx根據請求的ip和端口創建一個與請求最匹配的server塊列表,優先匹配指定了特定ip的server塊,其次才會選擇listen 0.0.0.0的這種server塊.但是無論是哪種情況,端口必須是完全匹配的
  3. 如果只有一個最佳匹配,那么將使用匹配的server塊響應請求,否則開始評估每一個server塊的server_name指令

再次強調一遍,只有當listen指令無法找到最佳匹配時才會考慮評估server_name指令.

比如,我們假設example.com域名指向了192.168.0.1,且位于192.168.0.1上的nginx有且僅有如下兩個server塊:

# server block 1server {  listen 192.168.0.1;  server_name other.com  ...}# server block 2server {  listen 80;  server_name example.com  ...}

Server_name指令

如果根據listen指令無法得到最佳匹配,將會開始解析server_name指令.nginx會檢查請求中的"Host"頭,這個值包含了客戶端實際試圖請求的域名或者ip地址.nginx會根據這個值去匹配server_name指令,匹配規則如下:

  1. nginx會嘗試尋找一個和sever_name和Host值完全匹配的server塊,如果找到多個精確匹配,則會使用第一個匹配的server塊
  2. 如果沒有找到精確匹配的server塊,則nginx嘗試找到server_name帶有*開頭的server塊,如果找到多個,則選擇最長匹配的server塊
  3. 如果沒有找到使用開頭的server塊,則會尋找以結尾的server塊,同樣,如果有多個匹配, 選擇最長匹配
  4. 如果沒有找到使用*匹配的server塊,則會尋找使用正則表達式(以~開頭)定義server_name的server塊,如果找到多個匹配,會使用第一個匹配
  5. 如果沒有找到正則表達式匹配的server塊,則nginx將會選擇一個匹配listen字段的default server塊.每一個ip和端口組合都可以配置一個且只能配置一個默認的default_server塊,如果沒有的話,則會選擇可用列表中的第一個server(此時的選擇是隨機的,順序不固定)

示例如下:

(1)準確的server_name匹配,例如:

server {   listen    80;   server_name www.domain.com;   ...}

(2)以*通配符開始的字符串:

server {   listen    80;   server_name *.domain.com;   ...}

(3)以*通配符結束的字符串:

server {   listen    80;   server_name www.*;   ...}

(4)匹配正則表達式:

server {   listen    80;   server_name ~^(?.+)/.domain/.com$;   ...}

(5)如果以上都沒有匹配,則使用default_server.如果沒有指定default_server,則會選擇第一個可用的server.我們可以指定對于沒有匹配的host值時,返回錯誤到客戶端.可以用來防止別人把垃圾流量轉到你的網站。

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

通過返回444這個nginx的非標準錯誤碼讓nginx斷開與瀏覽器的連接

Location的匹配邏輯

 Location語法解析

location optional_modifier location_match {  ...}

其中可用的modifier修飾符如下

Nginx,Server,Location,匹配邏輯

判定規則

1、nginx首先檢查基于前綴的location匹配(即不包含正則表達式的匹配)

2、如果有使用=修飾符的location塊與請求的URL完全匹配,則立刻使用該location響應請求

3、如果沒有找到帶有=修飾符的location塊匹配,則會繼續計算非精確前綴,根據給定的URI找到最長匹配前綴,然后進行如下處理:

(1)如果最長的匹配location帶有^~修飾符,nginx立刻使用該location響應請求

(2)如果最長的匹配location不帶有^~修飾符,nginx會將該匹配暫時存起來,然后繼續后續匹配

4、在確定并儲存最長匹配的前綴location塊后,nginx繼續檢查正則表達式匹配location(區分大小寫/不區分大小寫).如果存在正則表達式滿足要求的匹配,則會選擇與請求的URI匹配的第一個正則表達式的location來相應請求

5、如果沒有找到與請求的URI匹配的正則表達式location,則使用之前存儲的最長前綴location響應請求

補充

通常情況下,一旦選擇使用某一個location響應請求,那么請求將會在該location內部進行處理,而與其他location無關.但是location中某些指令會觸發新的location匹配,比如:

(1)try_files

(2)rewrite

(3)error_page

關于為https配置default_server,參考Properly setting up a “default” nginx server for https

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持ASPKU武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品国产成人| 国内精品久久久久久中文字幕| 日韩国产欧美精品一区二区三区| 久久中文字幕视频| 日本sm极度另类视频| 欧美精品电影免费在线观看| 久久久久久久久久久av| 日韩免费在线视频| 欧美激情综合色| 亚洲免费电影在线观看| 亚洲欧美日韩久久久久久| 国产精品爱久久久久久久| 欧美成人免费全部观看天天性色| 欧美视频在线免费| 亚洲一区中文字幕在线观看| 久久久久久久999精品视频| 日韩欧美亚洲一二三区| 亚洲一品av免费观看| 成人黄色大片在线免费观看| 亚洲欧洲国产一区| 精品国产欧美成人夜夜嗨| 亚洲自拍小视频| www.日韩.com| 一本色道久久综合亚洲精品小说| 成人午夜激情免费视频| 91chinesevideo永久地址| 精品国产一区二区三区久久久| 亚洲精品国偷自产在线99热| 亚洲精品一区二区三区婷婷月| 欧美在线视频免费| 永久免费看mv网站入口亚洲| 国产日韩欧美电影在线观看| 国产精品一区久久| 精品成人国产在线观看男人呻吟| 国产精品一二三在线| 欧美日韩国产精品一区二区不卡中文| 国语自产精品视频在免费| 国产精品久久二区| 亚洲欧美日韩精品久久| 欧美成人午夜影院| xvideos成人免费中文版| 97热精品视频官网| 国产成人激情小视频| 国产精品爽黄69| 欧美最顶级的aⅴ艳星| 日韩中文视频免费在线观看| 黄色成人av在线| 亚洲综合小说区| 日本不卡视频在线播放| 日韩在线中文字幕| 九九热在线精品视频| 精品久久久久久久久久国产| 日韩精品在线看| 高清欧美一区二区三区| 亚洲美女在线看| 亚洲欧美在线一区二区| 欧美成人精品h版在线观看| 日本国产欧美一区二区三区| 亚洲综合成人婷婷小说| 国产日韩av在线| 久久久久成人精品| 亚洲免费电影在线观看| 日本精品久久久| 国产拍精品一二三| 日韩欧美国产中文字幕| 亚州国产精品久久久| 日本国产一区二区三区| 欧美成人精品一区二区三区| 久久久在线视频| 亚洲欧美另类国产| 国产99久久精品一区二区 夜夜躁日日躁| 97在线视频免费播放| 成人午夜在线观看| 欧美xxxx18国产| 国产视频观看一区| 亚洲乱码国产乱码精品精| 91免费看片在线| 91国内揄拍国内精品对白| 亚洲精品久久久久久久久久久久久| 亚洲免费视频观看| 538国产精品一区二区免费视频| 亚洲精品国产综合区久久久久久久| 久久久久久久久久久人体| 国产精品久久久久久久久久东京| 欧美理论电影网| 亚洲精品欧美日韩| 精品少妇一区二区30p| 国产精品久久久久久中文字| 亚洲色图校园春色| 欧美视频在线看| 国产精品久久在线观看| 韩国v欧美v日本v亚洲| 久久久国产精品一区| 亚洲人在线视频| 在线日韩中文字幕| 亚洲综合成人婷婷小说| 精品偷拍一区二区三区在线看| 精品露脸国产偷人在视频| 日本亚洲欧美成人| 久久久国产在线视频| 国产精品美女在线| 成人黄在线观看| 午夜精品久久久久久99热软件| 欧美成人免费一级人片100| 中文字幕av一区| 久久久久久久国产精品| 亚洲国产免费av| 狠狠躁夜夜躁人人爽天天天天97| 国产成一区二区| 亚洲美女中文字幕| 亚洲的天堂在线中文字幕| 中文在线不卡视频| 国产成人精品久久二区二区| 久久久成人精品视频| 亚洲天堂影视av| 日韩欧美高清视频| 成人午夜一级二级三级| 亚洲欧美日韩久久久久久| 91精品国产电影| 精品国产欧美一区二区三区成人| 亚洲国产私拍精品国模在线观看| 国产精品视频久久久久| 韩曰欧美视频免费观看| 欧美精品电影免费在线观看| 97在线视频免费播放| 久久久999国产精品| 亚洲乱码av中文一区二区| 国产成人aa精品一区在线播放| 亚洲色图第一页| 亚洲精品久久久久久久久久久| 精品色蜜蜜精品视频在线观看| 久久视频这里只有精品| www.欧美视频| 国产精品美女免费| 国产91精品视频在线观看| 日韩av有码在线| 久久精品青青大伊人av| 日韩三级成人av网| 国产美女精彩久久| 欧洲亚洲在线视频| 国产成人在线视频| 欧美二区乱c黑人| 中文字幕国产亚洲| 精品福利免费观看| 亚洲电影免费观看| 日韩美女视频中文字幕| 亚洲偷欧美偷国内偷| 欧美日韩不卡合集视频| 日韩电影免费在线观看中文字幕| 国产精品美女www爽爽爽视频| 九九热精品视频| 91av在线视频观看| 久久成人精品电影| 91免费看片在线| 欧美精品第一页在线播放| 欧亚精品在线观看| 久久久久一本一区二区青青蜜月| 日韩精品在线免费观看视频| 91在线观看免费观看| 一区二区三区高清国产| 亚洲第一中文字幕在线观看| 欧美成人黄色小视频| 亚洲成人久久一区| 欧美成人黑人xx视频免费观看|