为什么在通过域名可正常WEB访问,而直接通过IP地址访问却不成功?

admin 知识百科评论338字数 576阅读1分55秒阅读模式

问题现象

  • 直接通过域名进行访问,可正常打开网页;为什么在通过域名可正常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地址访问却不成功?

 

出现以上现象的原因是,由于web服务器使用了nginx代理将同一端口根据不同域名转发到不同端口,从而解决在一台服务器上部署多个Tomcat/Apache项目,共用同一个端口号80/443的问题。

  • 通过域名访问时所发出HTTP get报文可发现,报文的host字段中将会包含HTTP所请求的域名地址;服务器将根据此域名的nginx映射信息,在返回的HTTP应答报文中告知客户端,该域名资源的真实端口为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
  • 转载请务必保留本文链接:https://gzdayue.com/1544.html
匿名

发表评论

匿名网友 填写信息

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