为何使用ping获取的IP无法直接访问网站?以pixiv.net为例
为什么直接访问Pixiv的IP会被禁止,但绑定Hosts后却能正常访问?
这其实是Web服务器**虚拟主机(Virtual Host)**配置导致的典型问题,我来拆解一下背后的逻辑:
直接访问IP被禁止的原因
现在绝大多数网站都用虚拟主机部署,一台服务器(对应一个公网IP)上会托管多个网站。Web服务器(比如Nginx、Apache)需要通过HTTP请求头里的Host字段来判断应该返回哪个网站的内容。当你直接在浏览器输入210.129.120.44时,浏览器发送的请求头中Host字段的值就是这个IP地址,而Pixiv的服务器并没有配置针对这个IP的站点规则,所以会返回access forbidden(403禁止访问)的响应。绑定Hosts后能正常访问的原因
当你在hosts文件中添加如下规则:210.129.120.44 pixiv.net浏览器访问
pixiv.net时,会优先使用hosts文件里指定的IP,同时发送的HTTP请求头中Host字段的值仍然是pixiv.net。Pixiv的服务器识别到这个合法的Host字段,就会正常返回网站内容,和你直接访问域名的效果完全一致。
简单来说,服务器认的是请求里的Host标识,而不是单纯的IP地址——只要请求里带对了pixiv.net这个Host,不管是通过DNS解析还是hosts绑定的IP,服务器都会正常响应。
内容的提问来源于stack exchange,提问作者Heatmint




