NGINX 提供错误的网站,浏览位置不一致

NGINX 提供错误的网站,浏览位置不一致

我遇到了一个我不明白的奇怪问题。我使用 EE 引擎脚本在 linode 上安装了一个 wordpress 博客,使用的是 NGINX。过去这种方法效果很好。

该脚本为我的域名安装了一个 VHOST(我们称之为 example.com),/etc/nginx/sites-available 中的最终结果是:

  • 默认
  • 示例.com
  • 22222(管理工具,这些不是问题)

问题 :

在 linode 中设置 DNS 后,一切似乎都运行正常。Example.com 毫无问题地打开了 WordPress 博客。然而,在我的办公室,NGINX 会恢复为默认设置!... 因此,在家里和其他地方都没有问题,而在其他一些地方(如办公室),NGINX 会给我默认的 index.xxx(带有 NGINX 正在工作的消息)。同样,笔记本电脑,同样的浏览器,一切都一样,但解析不同,具体取决于我所在的物理位置。

解决方案1:

通过在配置中将其设为 default_server 来强制 NGINX 使用 example.com。这可行,但这不是解决问题的必经之路,因为 NGINX 应该捕获域名并提供正确的网站。否则,当我将来在其上设置更多网站时,我如何才能相信它会提供正确的页面?

解决方案2:

文件:etc/nginx/sites-enabeled/default 包含以下几行:

# Default server configuration
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        # ......

每当我注释掉第二个 listen 指令时,即:

listen [::]:80 default_server;

我保留第一个,然后 NGINX 正确解析我的域名,而 /etc/nginx/sites-enabled/default 仍然是 default_server。

这似乎是正确的行为,对吗?

问题:

所以,现在我想知道这是否真的是正确的行为,为什么会这样,以及这是否是一个错误或只是一个配置错误。

漏洞 ??? :因为使用原始配置(包括第二条指令),NGINX 可以从我家正确旋转,但不能从我的工作场所旋转(相同的笔记本电脑、浏览器等)。不一致

配置错误????:你告诉我为什么会这样,以前它无法仅从我的工作场所正确解析......

答案1

listen我的猜测是,您在服务器配置中没有 IPv6指令example.com,但在 IPv6 不起作用的地方使用 IPv6 访问网站。

在这种情况下,该listen [::]:80 default_server;指令会捕获该请求,因为没有任何内容与 匹配example.com。如果删除此行,服务器将完全恢复到 IPv4,一切正常。

在这种情况下,正确的解决方案是添加listen [::]:80example.com服务器节。

相关内容