2 个域名,2 个证书,1 个公网 IP,1 个 nginx 服务器

2 个域名,2 个证书,1 个公网 IP,1 个 nginx 服务器

我希望你能帮助我,因为我不明白为什么会发生这种情况。我有以下 2 个域:

  • alpha.com
  • beta.com

它们都指向同一个服务器IP:

  • xxxxx

我在这个服务器上运行了一个 nginx。在我的防火墙上,我将端口 80 和 443 转发到该服务器的内部 IP;

  • 192.168.1.2

两个域名都有自己的证书。

以下是这两个域的服务器配置:

问题:这里的问题是,当我访问 alpha.com 时,服务器会将我重定向到 http.s://alpha.com 并加载 alpha.com 的内容,到目前为止一切正常。当我在浏览器上打开新选项卡并输入 beta.com 时,浏览器上的 URL 更改为 http.s://beta.com,但会加载 alpha.com 的内容。

我该如何告诉 nginx 根据浏览器中输入的 URL 为每个域提供正确的目录并仍保留 https?

谢谢。

答案1

您的两个虚拟主机都指向环回地址上的同一个端口。

你在听什么http://127.0.0.1:2368

您需要配置该服务以监听两个不同的端口,并将每个 nginx vhost 代理到其自己的唯一端口。

答案2

看一下这篇关于 Digital Ocean 的文章。

可以通过服务器名称识别(SNI)。这是 SSL 的一个相对较新的功能。以前,两个(或更多)不同的域名不可能使用同一个 IP 地址进行 https 访问。

答案3

实际上,我发现了自己的错误,我在一个域上运行了 ghost 博客平台,在另一个域上运行了 wordpress。我通过从 wordpress 站点的 nginx 配置文件中删除以下代码解决了该问题。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header HOST $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:2368;

仅供参考,@MyNameIsBoring 提到的端口 2368 是 ghost 使用的端口,因此我设置了反向代理以在 80 和 443 上提供服务。显然,这对 wordpress 不起作用,通过删除该部分代码,一切都会开始正常工作。

相关内容