2017-06-14 23 views
1

我正在码头群和aws上工作。我对它没有太多的想法。 如果我的问题是错误的,请纠正我,并请善意帮助我解决我的问题。如何将我的网站作为https在AWS中作为Docker群集群运行?

我有在负载均衡器下运行在AWS中的我的码头群集群。 我从https证书管理器为我的负载均衡器创建了一个证书。

在监听器下的loadbalancer标签页中,如果我为下面的负载平衡器协议和http实例协议设置了https,当我在浏览器中键入https://website-url时,它会自动重定向到http。

LoadBalancerProtocol LoadBalancerPort InstanceProtocol InstancePort Cipher SSL Certificate HTTPS 443 HTTP 80 Change 6e7528d6-8261-4d61-b1d3-3c2548e1b575 (ACM) Change

但我想要的网站为HTTPS而不是HTTP运行。 所以我改变如下。这使得实例端口及其协议为443和https。

LoadBalancerProtocol LoadBalancerPort InstanceProtocol InstancePort Cipher SSL Certificate HTTPS 443 HTTPS 443 Change 6e7528d6-8261-4d61-b1d3-3c2548e1b575 (ACM) Change

但这https://website-url后没有在浏览器中的任何响应连续运行。

做了一些搜索后,我才知道ACM证书只适用于负载均衡器而不适用于后端实例。

这就是我需要为https启用apache的实例级别。

码头群集群有1个经理和3个工人节点。所有主机实例操作系统都是Alpine OS。节点内的容器是Centos-7。 容器在群集中作为服务运行。

请指导我在此, 我需要配置自签名证书的容器内或主机实例的Apache。 我希望我的网站以https而不是http运行。

请告诉我需要什么步骤。

感谢

回答

0

负载平衡器端口是什么人跟在你的负载平衡器,所以负载均衡器80和443端口是正确的。

实例端口是负载均衡器与您的Web服务器通信的端口。在这种情况下,你们两个都应该是80,除非你的网络服务器使用有效的SSL证书在443上进行监听(并非如你所使用的AWS证书那样)。

然后在你的代码或者你的web服务器中,做的是检查X-Forwarded-Proto标题http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html,如果它不是https重定向到https。 https://www.allcloud.io/how-to/how-to-force-https-behind-aws-elb/有几个例子。

+0

嗨TheAnnihilator, 感谢您的好处。 我看着你提到的,并试图在.htaccess文件重写规则在我的搬运工容器内代码的链接。但是当我通过浏览器“https:// instance-ip”访问实例ip时没有响应。 现在该怎么办?直接 –

+0

如果你正在做HTTPS到您的实例IP,你需要确保你的Web服务器侦听端口443,并且该安全组连接到您的实例允许443。 请记住,如果您通过IP连接到您的实例,则SSL将无法正常工作,因为它需要成为域名。 – TheAnnihilator