Nginx中的伺服器名稱規則

2021-08-30 09:44:42 字數 1562 閱讀 7684

伺服器名稱(server names)

伺服器名稱是通過指令server_name來指定的。但是在前面講的部分,使用的是確切的伺服器名稱(exact names),當然在實際中還可以使用wildcard names以及正規表示式的伺服器名稱

server

server

server

server

對於乙個具體的情況,nginx是通過如下的順序來查詢對應的虛擬伺服器名稱的

1.     如果有確切的server name,那就選它了

2.     如果匹配*.nginx.org

3.     如果匹配mail.*

4.     最後匹配配置檔案的正規表示式

對於上面的匹配,按照從上到下的順序,如果找到匹配的話,就停止搜尋。

wildcard名稱

wildcard虛擬伺服器名稱只能夠放在名稱的最開頭或者最尾部,因此,www.*.nginx.org

或者w*.nginx.org是非法的。當然上面的這兩個可以通過正規表示式來完成,即~^www\..+\.nginx\.org$或~^w.*\.nginx\.org$。乙個*可以匹配好幾個名稱,因此,*.nginx.org不僅僅可以匹配www.nginx.org

,也可以匹配www.sub.nginx.org。

當然這裡面有乙個特殊的情況,即.nginx.org其表示匹配nginx.org和*.nginx.org

正規表示式伺服器名稱

在nginx中,正規表示式跟pcre一樣。如果使用正規表示式的話,必須使用~開頭,否則會理解為確切的伺服器名稱,server_name如下圖所示:

server_name ~^www\d+\.nginx\.org$

同時不要忘記在正規表示式的前頭加上^符號,在後頭加上$符號。如果在正規表示式中包括有符號,則必須要用「」包起來

server_name 「~^(?\w\d+)\.nginx\.net$」

其中在正規表示式裡面命名的情況下,在後續中可以作為變數使用,舉例如下:

server }

在pcre中(?.+)中,這跟python中常用的(?p.+)是一樣的,嘿嘿

關於虛擬伺服器名稱的其他的說明

1.     如果沒有設定server_name,那麼就使用hostname作為其server_name

2.     如果http request頭中沒有host這一項,則在server_name中指定乙個空字串「」

server

3.     如果使用者使用的是ip位址來訪問,則其http request頭的host項是ip位址,則需要在server_name上指定ip位址

server

4.     對於匹配所有的異常情況的話,使用

server

對虛擬伺服器名稱的優化

最好使用

server

而不是server

如果自己定義了很多很長的server_name的話,最好在http層次上將server_names_hash_max_size和server_names_hash_bucket_size設大一些

隱藏NGINX伺服器名稱 和版本號

隱藏nginx伺服器名稱 修改或隱藏伺服器名稱需要修改原始碼nginx.h,nginx.h在src core 目錄下 具體操作如下 把下面兩個巨集的值修改為自己設定的值,例如 ngx 都改為 即隱藏名稱。1 define nginx ver nginx nginx version 改為 define...

伺服器 Linux iptables 規則

1.iptables 規則常見 管理控制選項 2.iptables防火牆常用的策略 1.拒絕進入防火牆的所有icmp協議資料報 iptables i input p icmp j reject 2.允許防火牆 除icmp協議以外的所有資料報 iptables a forward p icmp j a...

如何更改伺服器名稱

在某些時候,例如有的培訓中心通過轉殖磁碟的方式批量安裝作業系統以及sql server,會出現乙個問題,因為安裝作業系統時的機器名字是一樣的,所以sql server記錄的伺服器名字是一樣的,往往在時候,管理員會去改計算機的名字,這樣一來,sql server執行就有問題了 要解決這個問題,需要用到...