我在 AWS 上部署了一个 node js 应用程序,使用 Elastic Beanstalk 和单个实例。它与 HTTP 配合得很好,但我在设置 HTTPS 访问时遇到了麻烦。
我创建了证书并按照 AWS EB 文档中的说明进行操作:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-nodejs.html
以下是我部署新代码后出现的问题的描述:
我仍然可以使用 HTTP 连接到浏览器上的 URL,但是,当尝试使用 HTTPS 连接时,我收到消息ERR_CONNECTION_REFUSED
我使用 netcat 检查端口 443 是否可以访问,但不能:
nc -z environment.elasticbeanstalk.com 80
返回:
Connection to environment.elasticbeanstalk.com port 80 [tcp/http] succeeded!
但
nc -z environment.elasticbeanstalk.com 443
不返回任何内容
我还检查了与 EC2 实例关联的安全组的入站规则,它确实打开了端口 443:
最后,我检查了 elastic beanstalk 日志,找不到任何对 HTTPS 请求的引用。如果我查找尝试使用 HTTPS 访问应用程序时附近的时间戳,则没有找到。看起来 nginx 服务器从未收到过该请求。
当我使用 Elatstic Beanstalk 与 php/apache 服务器时,设置类似的 HTTPS 访问没有遇到任何问题,但在这种情况下,我对 node/nginx 还不熟悉,所以我可能会错过一些基本的东西。
对于我应该检查什么或者做什么,您有什么建议吗?
提前非常感谢,
埃雷兹
答案1
好的,我发现了这个问题:在 elastic beanstalk 配置中,没有设置代理。
我更新了 EB 配置以包含 nginx 代理并且它可以正常工作。
Configuration > Software Configuration > Container Options > Proxy server: nginx