伺服器名稱(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執行就有問題了 要解決這個問題,需要用到...