我的博客
欢迎来到我的博客
bunny.icu

Chrome 访问 IP 无法跳转到域名的问题及解决方法

Chrome 访问 IP 无法跳转到域名的问题及解决方法

在配置 Nginx 做 IP 到域名跳转的时候,你可能会遇到一个非常诡异的场景:

  • 用浏览器访问服务器的 IP 地址,希望它自动跳转到你的域名;
  • 在大多数浏览器(如 Firefox、Edge)或设备上测试都没问题;
  • 唯独你自己的 Chrome 浏览器不跳转,而是直接访问了 https://<IP>
  • 更奇怪的是,用其他电脑上的 Chrome 浏览器访问,反而是正常的!

本文将详细介绍这个问题的成因和解决方法。


❓问题复现

假设你在 Nginx 中配置如下逻辑:

server {
    listen 80 default_server;
    server_name _;
    rewrite ^(.*)$ https://www.quantverse.top permanent;
}

你希望所有通过 IP 的访问(http://<IP>)自动重定向到你配置好的域名 https://www.quantverse.top

但在自己的 Chrome 上访问 IP,却直接跳到了 https://<IP>完全没走上面的重定向规则


⚠️ 根本原因:Chrome 的 HSTS 缓存机制

这个问题的罪魁祸首是 —— Chrome 的 HSTS 缓存(HTTP Strict Transport Security)

什么是 HSTS?

HSTS 是一种安全机制,一旦网站启用了它,浏览器就会记住这个站点需要强制使用 HTTPS。

  • 例如你访问了 http://123.123.123.123,并收到了带有 Strict-Transport-Security 的响应头;
  • Chrome 会记录下这个 IP;
  • 之后你即使再输入 http://123.123.123.123,Chrome 会直接帮你升级成 https://123.123.123.123,压根不会发送 HTTP 请求。

所以发生了什么?

你写的 Nginx 配置只处理了 http://<IP> 请求(因为那是 listen 80),但是浏览器根本没发 HTTP 请求就跳到了 HTTPS,导致你的重定向完全无效。


✅ 解决方案一:清除 Chrome 的 HSTS 缓存(推荐)

  1. 打开地址栏输入:
    chrome://net-internals/#hsts
    
  2. 滚动到 “Delete domain security policies” 部分。

  3. 在文本框中输入你的服务器 IP 地址,例如:

    123.123.123.123
    
  4. 点击 “Delete”。

  5. 然后重新访问 IP 地址,应该就能跳转到你的域名了。

🎉 成功! 这说明确实是本地 HSTS 缓存导致的问题。


✅ 解决方案二:为 IP 的 HTTPS 请求加一份 Nginx 配置(更彻底)

为了避免未来再次出现这个问题,建议在 Nginx 中为通过 IP 访问的 HTTPS 请求加一份 default_server 的监听逻辑:

server {
    listen 443 ssl default_server;
    server_name _;
    ssl_certificate        /usr/local/nginx/ssl/quantverse.top_cert_chain.pem;
    ssl_certificate_key    /usr/local/nginx/ssl/quantverse.top_key.key;

    # 强制重定向到域名
    rewrite ^ https://www.quantverse.top$request_uri? permanent;
}

这样就能保证无论用户怎么访问 IP(HTTP / HTTPS),都能被重定向到你设定的域名。


🧠 延伸阅读:如何设置自己的 HSTS 策略?

如果你想主动使用 HSTS 来提升网站安全性,可以在域名配置中加上类似这样一行:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

这会让访问你域名的浏览器自动记住「以后只能用 HTTPS 访问」,但要注意 不要对 IP 加这个头!


📝 总结

问题 Chrome 访问 IP 不跳转到域名
根因 本地缓存了该 IP 的 HSTS 策略,自动升级 HTTP 为 HTTPS
快速解决 删除本地 HSTS 缓存
彻底解决 为 IP 的 HTTPS 请求单独加一份 Nginx 配置做跳转

如果你也遇到了类似的问题,不妨试试上面的两个方案,基本可以彻底解决 Chrome 的顽固重定向问题。如果你觉得这篇文章对你有帮助,欢迎转发、点赞、收藏~

本文由ChatGPT生成,已验证可用性
没有标签
首页      前端      Chrome 访问 IP 无法跳转到域名的问题及解决方法

推荐文章

发表回复

textsms
account_circle
email

bunny.icu

Chrome 访问 IP 无法跳转到域名的问题及解决方法
在配置 Nginx 做 IP 到域名跳转的时候,你可能会遇到一个非常诡异的场景: 用浏览器访问服务器的 IP 地址,希望它自动跳转到你的域名; 在大多数浏览器(如 Firefox、Edge)或设备上测…
扫描二维码继续阅读
2025-04-20