為什么在通過域名可正常WEB訪問,而直接通過IP地址訪問卻不成功?

admin 知識百科評論1,859字(zi)數 576閱(yue)讀(du)1分55秒(miao)閱讀(du)模式

問題現象(xiang)

  • 直接通過域名進行訪問,可正常打開網頁;為什么在通過域名可正常WEB訪問,而直接通過IP地址訪問卻不成功?
  • 通過DNS解析的域名與IP對應信息;為什么在通過域名可正常WEB訪問,而直接通過IP地址訪問卻不成功?為什么在通過域名可正常WEB訪問,而直接通過IP地址訪問卻不成功?
  • 直接通過IP地址進行訪問,顯示404無法訪問頁面;為什么在通過域名可正常WEB訪問,而直接通過IP地址訪問卻不成功?

問題分析

  • 通過抓包分析域名訪問時數據包交互情況,發現客戶端首先是向服務器的80端口發起TCP連接,完成建立后發出HTTP get報文,在收到服務器的HTTP響應報文后,改為向TCP 8081端口建立連接為什么在通過域名可正常WEB訪問,而直接通過IP地址訪問卻不成功?
  • 而通過抓包分析IP訪問時數據包交互情況,卻發現客戶端向服務器的80端口建立完成TCP連接后,所發出HTTP get報文,沒有得到服務器的HTTP回復為什么在通過域名可正常WEB訪問,而直接通過IP地址訪問卻不成功?

 

出現(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連接;為什么在通過域名可正常WEB訪問,而直接通過IP地址訪問卻不成功?
  • 而通過IP訪問時所發出HTTP get報文的host字段中,所記錄則是IP地址,服務器將此訪問視為向80端口的訪問,不再進行nginx代理;
  • 但由于80端口并沒有直接提供web服務,找不到相應資源,所以返回404的錯誤碼;為什么在通過域名可正常WEB訪問,而直接通過IP地址訪問卻不成功?

weinxin
我的微信
微信掃一掃
admin
  • 本文由 發表于 2022年12月28日 16:38:04
  • 轉載請務必保留本文鏈接://ajzdesign.com/1544.html
匿名

發表評論

匿(ni)名網(wang)友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: