我有一个奇怪的问题,我无法确定原因。
有两台服务器托管两个不同的站点。这两个站点都是基于PHP的应用程序。
服务器1(Ubuntu)
服务器已为此站点启用了SSL。这个网站运行正常。
服务器2(红帽)
服务器未为此站点启用SSL。
以下是发生的事情:
现在显然有一些东西告诉这个子域名在通过SSL提供时转到其他站点。
我检查了什么:
我可以找到任何一台服务器上的NOTHING,告诉站点2重定向到站点1,仅在HTTPS上。现在显然我不希望任何人直接找到问题,因为你无法看到我的整个服务器配置,但是我正在寻找关于此重定向可能来自哪里的建议
答案 0 :(得分:1)
如果您将site1和site2托管在同一台服务器上,我就能理解这一点。
基本上如果你没有为https(端口443)上的第二个vhost设置配置,那么Apache将默认回退到第一个vhost。
因此,如果两个站点都在同一个Apache配置中,则可能就是这样。但你说他们不是。您确定不是从同一台服务器提供这两个站点(可能在另一台服务器上有副本)吗? IP地址是否相同?两台服务器前面是否有负载均衡器或CDN基础设施?
另外你说"如果我访问https://上的站点2,它会重定向到另一台服务器上的站点1。"你能解释一下这里发生的事情吗?如果您转到站点2并且没有设置https,那么这甚至如何响应此请求?向初始请求提交了什么证书(即之前重定向)?它是site1证书吗?如果是这样,那么您在浏览器中是否会出现证书错误(因为它为您请求的网站提供了错误的证书),您必须在重定向之前点击该错误?或者证书对这两个网站都有效吗?
您还可以使用此openssl命令查看服务器返回的内容(特别是它返回的证书):
openssl s_client -connect app.site2.com:443
查看浏览器开发人员工具并了解重定向的确切方式也很方便。在Chrome中按F12,转到网络选项卡,单击保留日志,然后转到https://app.site2.com/。第一个要求是什么?它是301还是302(即服务器端重定向)?或者,如果它是200后跟https://app.site1.com/,则某些JavaScript必须导致重定向。
一旦您回答了这些问题,就有可能提供进一步的指导。