游客发表
你在浏览器地址栏敲下那串数字,知道回车,进入网页就开了。网站这事儿看起来简单,知道但中间发生的进入事比大多数人想的要绕。
IP地址本质上就是网站一台机器在网络上的门牌号。比如 93.184.216.34,知道这是进入 example.com 曾经用的一个IP。你把这个号码输进浏览器,网站浏览器不会直接拿它去要网页,知道它得先搞清楚几件事:用什么协议、进入连哪个端口、网站请求哪个路径。知道
HTTP 默认走 80 端口,进入HTTPS 走 443。网站你在地址栏只写 IP,浏览器一般默认用 HTTP,也就是向 http://93.184.216.34:80/ 发请求。听起来没毛病,但实际操作中经常撞墙。
现在很少有一台服务器只跑一个站了。虚拟主机技术让同一个IP可以对应几十上百个域名。你直接访问IP,服务器收到请求后一脸懵——它不知道你要哪个站。HTTP/1.1 里有个 Host 头,正常情况下浏览器会填上域名,比如 Host: example.com,服务器靠这个字段来分发。你只给IP不给域名,Host 头要么是空的,要么就是那串IP,服务器找不到匹配的站点配置,返回一个默认页或者直接 404。
我试过访问某个云服务商的IP,出来一个空白页,标题写着“Welcome to nginx”。这就是服务器没配默认站点时的典型反应。
如果那个站只开了 HTTPS,你拿 IP 加 http:// 去访问,连不上。换成 https://93.184.216.34 呢?TLS 握手阶段就会失败。证书是绑定域名的,你拿IP去请求,服务器出示的证书里没有这个IP,浏览器直接报错,连网页内容都看不到。Chrome 会甩一个 NET::ERR_CERT_COMMON_NAME_INVALID,火狐则说“证书不适用于该地址”。
有些小网站图省事,证书里把IP也加进 SAN 列表,但这是极少数。大部分情况下,纯IP访问HTTPS就是死路。
办法有,但得看情况。如果服务器没做虚拟主机,一个IP就对应一个站,那你直接访问IP通常能打开。我自己的VPS就是这样,IP直接指向一个测试页。但商业网站几乎不会这么干。
另一个办法是改本机 hosts 文件。你知道目标站的IP,又知道它的域名,可以在 /etc/hosts(Windows 是 C:\Windows\System32\drivers\etc\hosts)里加一行:
93.184.216.34 example.com 这样浏览器访问 example.com 时就不查DNS了,直接用你指定的IP,同时 Host 头也带上了正确的域名。服务器正常响应,网页就出来了。这招在排查DNS问题或者临时绕过解析故障时很好用。
还有种情况是直接加端口。比如 http://93.184.216.34:8080,如果服务器在8080端口跑了一个独立服务,且没绑定域名,那就能直接进。很多开发环境、路由器管理后台、监控面板都是这种模式。
拿IP直接访问一个正常网站,最常见的结局是:跳转到域名。服务器发现 Host 不对,返回 301 或 302,Location 头里写着 https://example.com/,浏览器自动跟过去,最后还是走域名访问。你看着地址栏从IP变成了域名,中间多了一次跳转。
也有硬气的服务器,直接返回 403。比如某些CDN节点,你不带正确域名来请求,它连默认页都不给,就一句 Forbidden。
所以“知道IP怎么进入网站”这个问题,答案不是固定的。得看服务器怎么配、走什么协议、有没有绑域名。单纯一个IP,能做的事比想象中少。域名不只是好记,它在HTTP协议里承担了路由功能,少了它,服务器根本不知道你要什么。
下次你ping一个域名拿到IP,兴冲冲往浏览器里贴,结果打不开——别急着怀疑网络,大概率是服务器在等一个它认识的域名。
随机阅读
热门排行
友情链接