日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

nginx匹配规则_Nginx系列之server_name定义与匹配规则

發(fā)布時間:2024/8/1 Nginx 84 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx匹配规则_Nginx系列之server_name定义与匹配规则 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Nginx系列之server_name定義與匹配規(guī)則

server_name用來指定請求中的Host頭部,在上一節(jié)的基于域名的虛擬機中,nginx匹配的規(guī)則就是根據(jù)server_name的不同,結(jié)合請求頭的Host頭部,來決定請求的路由目標。server_name有三種不同的配置格式,且不用配置格式的優(yōu)先級也不相同。接下來我們學習一下具體的配置格式與匹配順序。

1. server_name的配置格式之通配符匹配

# nginx.confserver { listen 80; server_name *.example.org; ...}server { listen 80; server_name mail.*; ...}

通配符格式中的*號只能在域名的開頭或結(jié)尾,并且*號兩側(cè)只能是.,所以www.*.example.org和w*.example.org是無效的。*號可以匹配多個域名部分,*.example.org不僅與www.example.org匹配,而且也與www.sub.example.org匹配。.example.org是比較特殊的通配符格式, 可以同時匹配確切名稱example.org和通配符名稱*.example.org。

2. server_name的配置格式之正則匹配

server { listen 80; server_name ~^(?<user>.+)\.example\.net$; ...}

正則匹配格式,必須以~開頭,比如:server_name ~^www\d+\.example\.net$;。如果開頭沒有~,則nginx認為是精確匹配,或者如果匹配字符中含有*號,則會被認為是通配符匹配,不過非法的通配符格式。在邏輯上,需要添加^和$錨定符號。注意,正則匹配格式中.為正則元字符,如果需要匹配.,則需要反斜線轉(zhuǎn)義。如果正則匹配中含有{和}則需要雙引號引用起來,避免nginx報錯,如果未加雙引號,則nginx會報如下錯誤:directive "server_name" is not terminated by ";" in ...。正則表達式命名捕獲的變量可以在nginx進行引用,下面示例:

server { server_name ~^(www\.)?(?<domain>.+)$; location / { root /sites/$domain; }}

正則表達式捕獲也可以通過數(shù)字進行引用,下面示例:

server { server_name ~^(www\.)?(.+)$; location / { root /sites/$2; }}

數(shù)字引用不推薦使用,此種方式容易被覆蓋。

3. server_name的配置格式之精確匹配

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

精確匹配格式指的除了通配符匹配和正則匹配之外的格式,就這么簡單。

4. 特殊匹配格式

1. server_name ""; 匹配Host請求頭不存在的情況。2. server_name "-"; 無任何意義。3. server_name "*"; 它被錯誤地解釋為萬能的名稱。 它從不用作通用或通配符服務(wù)器名稱。相反,它提供了server_name_in_redirect指令現(xiàn)在提供的功能。 現(xiàn)在不建議使用特殊名稱“ *”,而應(yīng)使用server_name_in_redirect指令。

5. 匹配順序

1. 精確的名字2. 以*號開頭的最長通配符名稱,例如 *.example.org3. 以*號結(jié)尾的最長通配符名稱,例如 mail.*4. 第一個匹配的正則表達式(在配置文件中出現(xiàn)的順序)

6. 優(yōu)化

1. 盡量使用精確匹配;2. 當定義大量server_name時或特別長的server_name時,需要在http級別調(diào)整server_names_hash_max_size和server_names_hash_bucket_size,否則nginx將無法啟動。

個人博客:https://www.aiopsclub.com/

總結(jié)

以上是生活随笔為你收集整理的nginx匹配规则_Nginx系列之server_name定义与匹配规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。