我正在尝试为我的网站设置 SSL 证书。但是我的网站this site can't be reached
在 Chrome 中响应。
在证书管理器中,它显示我的证书的关联资源是我的 ELB。ELB 设置为 HTTPS,端口 443。其目标组是 HTTP,端口 80。浏览 http/80 时,网站正常运行。我以为我的设置意味着用户点击 HTTPS ELB,然后 ELB 将使用端口 80 为我的网站提供服务。
httpstat https://www.ereverse.com
输出:
> curl -w <output-format> -D <tempfile> -o <tempfile> -s -S ereverse.com curl error: curl: (7) Failed to connect to www.ereverse.com port 443: Connection refused
我还应该注意到我的应用程序正在通过 docker 运行,它正在运行-p 80:5000
并且Dockerfile
有EXPOSE 80 443
。
答案1
根据此错误,假设您的 ELB 在端口 443 上有一个监听器...
Connection refused
...最明显的解释是您的 DNS 实际上并未指向 ELB。使用dig
或nslookup
进行验证。
配置了侦听器的 ELB 不会拒绝连接。安全组和网络 ACLS 也不要拒绝连接——如果配置错误,你得到的结果将是Connection timed out
,因为它们拒绝流量丢弃—— 而不是通过强制关闭连接尝试,这意味着Connection refused
:连接一直到达另一端的服务器,服务器主动返回一条消息(实际上)说:“我不知道你为什么认为我想在端口 443 上通话。这里没有任何东西在监听该端口。”
简单检查:使用 HTTPS 直接连接到 AWS 控制台中显示的 ELB 主机名。您应该会看到证书警告,因为证书不匹配。如果发生这种情况,则 ELB 已启动并正在监听,这表明 DNS 条目直接指向您的实例,而不是平衡器。