除 Chrome 外,所有浏览器都可以通过域名访问网站

除 Chrome 外,所有浏览器都可以通过域名访问网站

我正在尝试使用运行 nginx 的 Ubuntu 机器建立一个网站。出于某种原因,我能够在 Safari 和 Firefox 中通过域名访问该网站,但在 Chrome 中却无法访问服务器。但是,我可以使用 curl、Postman 等,并且可以如愿以偿地获取 index.html。

我发现在 Chrome 中我可以使用 IP 地址访问该网站,但我完全不知道下一步该检查哪里。

这是我的配置文件:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
    }

}

我已经更改了响应代码只是为了确保这是我实际遇到的配置。

任何帮助,将不胜感激!

编辑:域名是 gwilliam.dev

答案1

您的问题是因为您正在使用.dev域。

整个.dev顶级域名 (TLD)位于 HSTS 预加载列表中这意味着你必须使用 HTTPS 访问它。根据您的 nginx 配置片段,您仅提供 HTTP 绑定,而不是 HTTPS。

事实上,我很惊讶你能使用 Firefox 访问该域名,因为 Firefox.dev至少从 2018 年年中开始就强制使用 HTTPS。你可能正在使用非常旧版本,在这种情况下您应该立即升级。

让您的网站获得 HTTPS 支持的最简单方法是LetsEncrypt. 设置完成后,您的网站就可以在 Chrome 中运行了。

答案2

首先,通过尝试在 Chrome 中打开网站几秒钟后查看 Chrome 的 DNS 缓存,验证 Chrome 是否正确将目标网站的主机名 (FQDN) 解析为正确的 IP 地址。您可以在 Chrome 中打开 chrome://net-internals/#dns 来查看 Chrome DNS 缓存。

根据 FQDN 是否在 Chrome 的 DNS 缓存中列出,以及 IP 是否正确,您将知道下一步该做什么。

如果列出的 FQDN 不正确,则 Chrome 会从某个地方获取错误的 IP。如果甚至没有列出,则 Chrome 不会解析 IP 地址。无论哪种方式,您都可以缩小实际发生的情况的范围。

使用 Chrome 进行一些尝试。

  1. 在私人标签中尝试。
  2. 以其他用户身份登录同一台计算机。如果行为相同,则这是系统范围的设置,可能是 Chrome 版本。如果以其他用户身份运行,则这是您的 Chrome 配置文件中的问题。
  3. 尝试临时设置一个新的 Chrome 用户配置文件,看看是否能解决问题。如果能,则说明这是您的 Chrome 设置之一。您可以通过 Google 搜索 Chrome 配置文件的位置,具体位置因操作系统而异。您所要做的就是在 Chrome 关闭时将其移开,然后当您重新打开 Chrome 时,它​​将生成一个新的配置文件。验证完成后,您可以删除新的临时配置文件,然后恢复原始配置文件。关于如何执行此操作的信息很多,因此,如果需要,请通过 Google 搜索屏幕截图/详细信息。

相关内容