【问题标题】:Two Nginx instances, listening to different ports, only one reachable by domain两个 Nginx 实例,监听不同的端口,域只能访问一个
【发布时间】:2018-02-25 05:02:02
【问题描述】:

我使用 docker-compose 堆栈在我的个人 VPS 上运行。现在,我有一个由以下组成的堆栈:

  • Nginx(暴露端口 443)
  • 幽灵(博客)
  • MySQL(用于 Ghost)
  • 管理员(对于 MySQL,公开端口 8080)

我想试用 Matomo 分析软件,但我不想将它添加到我当前的堆栈中,直到我对它感到满意,所以我决定为 Matomo 分析创建第二个 docker-compose 堆栈:

  • Nginx(暴露端口 444)
  • 间友
  • MariaDB(用于 Matomo)
  • 管理员(对于 MariaDB,公开端口 8081)

在两个堆栈都运行的情况下,我可以在相应的端口访问所有内容,但只能通过 IP 地址。如果我尝试使用我的域,它只能连接到第一个 Nginx,即暴露端口 443 的那个。如果我在浏览器中尝试https://www.example.com:444,它无法连接。如果我在浏览器中尝试https://myip:444,它会连接到暴露端口 444 的第二个 Nginx 实例,警告我 SSL 证书有问题(因为我连接到我的 IP,而不是我的域),然后让我通过。

我想知道是否有人知道为什么会发生这种行为。诚然,我对设置 VPS、使用 Nginx 代理到其他托管服务等方面很陌生。如果事实证明 Nginx 不能以这种方式使用,我很想听听有关如何安排它的建议。 (我是否必须一次只运行一个 Nginx 实例,并且必须通过它代理到其他所有实例?等等)

谢谢!

【问题讨论】:

    标签: docker nginx docker-compose vps nginx-reverse-proxy


    【解决方案1】:

    我能够通过对 Cloudflare 进行故障排除来解决此问题。我在等待我的域接受我的 VPS 而不是 Cloudflare 的名称服务器时发布了这个问题。完成后,我对其进行了测试,它确实通过了https://example.com:444。这证明是 Cloudflare 阻止了我。

    我找到了this page,它解释说免费的 Cloudflare 计划仅支持少数端口,其中不包括端口 444。如果我升级到专业计划,我会有这个选项。

    因此,我可以得出结论,我的问题的解决方案是升级我的 Cloudflare 计划或合并两个 docker-compose 堆栈,以便我可以接受仅端口 443 上的所有请求。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 2020-11-28
      • 2012-11-06
      • 1970-01-01
      相关资源
      最近更新 更多