問題現象(xiang)
- 直接通過域名進行訪問,可正常打開網頁;

- 通過DNS解析的域名與IP對應信息;


- 直接通過IP地址進行訪問,顯示404無法訪問頁面;

問題分析
- 通過抓包分析域名訪問時數據包交互情況,發現客戶端首先是向服務器的80端口發起TCP連接,完成建立后發出HTTP get報文,在收到服務器的HTTP響應報文后,改為向TCP 8081端口建立連接;

- 而通過抓包分析IP訪問時數據包交互情況,卻發現客戶端向服務器的80端口建立完成TCP連接后,所發出HTTP get報文,沒有得到服務器的HTTP回復;

出現(xian)以上現(xian)象的原因是,由(you)于web服務(wu)器(qi)使用了nginx代理將同一(yi)(yi)端口(kou)根據不同域名(ming)轉(zhuan)發到(dao)不同端口(kou),從(cong)而解決在一(yi)(yi)臺(tai)服務(wu)器(qi)上部(bu)署多個Tomcat/Apache項目,共用同一(yi)(yi)個端口(kou)號80/443的問題。
- 通過域(yu)名(ming)訪問時(shi)所(suo)發出HTTP get報文可發現,報文的(de)host字段中將(jiang)會包(bao)含HTTP所(suo)請求的(de)域(yu)名(ming)地(di)址;服務(wu)器將(jiang)根據此域(yu)名(ming)的(de)nginx映射信(xin)息,在(zai)返回的(de)HTTP應答報文中告知客戶端,該(gai)域(yu)名(ming)資源的(de)真實(shi)端口為8081;
- 客戶端向服務器的8081端口,重新發起TCP連接;

- 而通過IP訪問時所發出HTTP get報文的host字段中,所記錄則是IP地址,服務器將此訪問視為向80端口的訪問,不再進行nginx代理;
- 但由于80端口并沒有直接提供web服務,找不到相應資源,所以返回404的錯誤碼;

我的微信
微信掃一掃






















評論