一、前景提要
最近在工作中遇到乙個坑,之前配置了很多次nginx虛擬主機及多級**,自以為對這塊已經很了解了,但前幾天在和京東做對接的時候,發現完全被整矇圈了,配了多個虛擬主機,不知道預設走那個了,多加乙個又會影響之前的,少加乙個,新的介面又不生效,後來又分析了下,之所以會亂,也是因為呼叫方也是多樣的,有直接ip的,有直接網域名稱的,還有二級**的,nginx虛擬主機對訪問的位址有嚴格的匹配規則,好多人都說ip和網域名稱不都是同乙個機子嗎,但對於nginx虛擬主機來說,ip和網域名稱是兩個不同的server。
二、真實環境簡述
a1側(呼叫方1)
a2側(呼叫方2)
a3側(呼叫方3)
b側(中轉側,直接ip)
c側(服務**提供側)
d側(後端服務)
a1側通過b轉到c側,再通過c側呼叫d側後端服務
a2側訪問c側ip,再通過c側呼叫d側後端服務
a3側訪問c側網域名稱,再通過c側呼叫d側後端服務
三、虛擬主機配置注意事項
1、建議如果配置了include ,則nginx.conf 裡不要在新增server,不然include 放在server前和server後也有影響;
2、如果之前已經在nginx.conf 裡配置了server,後續要新增採用include新增server,時,include如果放在server前面:情況如下:
2.1 如果nginx.conf 裡只有乙個server,則只要訪問的url能到達該nginx主機,都會走這個server匹配
2.2 如果nginx.conf裡有多個server,如果url的host位址匹配該server_name 則走該server,如果不匹配,則走第乙個server;
2.3 如果nginx.conf裡include指定的vhosts目錄裡有****.conf,則會優先匹配該conf檔案的server,如果vhosts有多個conf檔案,則匹配不到的都預設走該vhosts目錄下第乙個檔案,並且不會走nginx.conf檔案裡的server
3、如果之前已經在nginx.conf 裡配置了server,後續要新增採用include新增server,時,include如果放在server之後:情況如下:
3.1 如果vhosts目錄沒有conf檔案,則預設匹配nginx.conf 裡的server,且第乙個server為預設匹配
3.2 如果vhosts目錄有conf檔案,如果匹配到vhosts目錄下的server ,則走該配置,如果匹配不到,則走nginx.conf裡的第乙個server
綜上,如果採用include配置多虛擬主機,建議nginx.conf 檔案裡不要再配置server,統一配置到vhosts目錄下去
4、二次跳轉如何配置server
經多次實驗,不管中間經過幾次**,最終的nginx匹配只認原始的url位址,如果目標nginx有該server則匹配,沒有則走預設
Nginx虛擬主機配置
0.nginx簡介 nginx engine x 是乙個高效能的 http 和 反向 伺服器,也是乙個 imap pop3 smtp 伺服器。nginx 已經因為它的穩定性 豐富的功能集 示例配置檔案和低系統資源的消耗而聞名了。1.nginx使用注意事項 2.nginx相關檔案 3.nginx虛擬主...
nginx虛擬主機配置
就是在一台伺服器啟動多個 如何區分不同的 1 網域名稱不同 2 埠不同 乙個server節點就是乙個虛擬主機,可以配置多個server,配置多個虛擬主機,html是nginx安裝目錄下的html目錄。乙個網域名稱對應乙個ip位址,乙個ip位址可以被多個網域名稱繫結。本地測試可以修改hosts檔案。修...
nginx虛擬主機配置
虛擬主機的配置有多種 一 color green b 基於ip的虛擬主機 b color 二 color green b 基於埠的虛擬主機 b color 三 color green b 基於網域名稱的虛擬主機 b color 對於nginx要實現虛擬主機,通過nginx.cnf中的server進行...