【发布时间】:2016-06-05 15:13:31
【问题描述】:
我拥有一个域名(我们称之为example.org),并设置了一个从foo.example.org 指向AWS ELB FooBar-Load-Balancer-123456789.us-east-1.elb.amazonaws.com 的CNAME。该 ELB 的端口配置为 443 (HTTPS, ACM Certificate <GUID>) forwarding to 80 (HTTP)。 ELB 后面的唯一 EC2 实例运行 Docker 映像,在端口 80 上公开 Apache。
当我在网络浏览器中打开 https://foo.example.org 时,一切正常 - 页面按预期加载。如果我导航到https://foo.example.org/path,它同样会正确加载。但是,如果页面包含<a href="path">,则单击浏览器会尝试加载http://foo.example.org/path,这(正确)会给出错误-Chrome 中的“ERR_CONNECTION_REFUSED”,Firefox 中的“无法连接”。
检查 Chome 开发工具中的网络活动,我看到一个对https://foo.example.org/path 的初始请求,结果是301 Moved Permanently (from cache),位置为http://foo.example.org/path。这显然是导致浏览器行为的原因 - 这是我的服务器(它认为自己在 HTTP 上提供服务 - 或者至少是端口 80)、我的 ELB 或网站的 html 本身上的错误配置?
我想我可以通过使用绝对路径来解决这个问题,但是,考虑到我希望能够在本地启动 Docker 映像(在我的浏览器中打开 <IP Address>/path)以在推送更改之前进行测试,那并没有听起来像是一个真正的解决方案。
编辑:受this 的启发,我在新的 Chrome 隐身模式窗口和清除历史记录后的 Chrome 中检查了行为 - 在所有情况下都是相同的行为。
【问题讨论】:
标签: apache redirect ssl https load-balancing