【发布时间】:2020-10-02 10:25:37
【问题描述】:
你好,
我一直在努力在 AWS 上使用 HTTPS 运行单实例 Docker。
HTTP 访问正常,但我无法访问 HTTPS(谷歌浏览器显示“无法访问此站点”)。
这里我们有一个 Elastic Beanstalk 实例。所以没有负载均衡器,证书托管在实例上。
我遵循了这个教程:AWS HTTPS Single Instance Docker
实例工作正常,我的证书已正确上传,nginx 配置也已正确上传。 这是我到目前为止得到的:
- 尝试将安全组设置为允许 TCP 443,但没有成功。
- 尝试设置安全组以允许所有流量到任何地方,但没有成功。
- 来自我的域名的 HTTP 访问正常,这让我相信这不是 DNS 问题。
- HTTPS 访问正在使用来自实例的 curl,因此 nginx 配置对我来说看起来不错(日志访问正常工作)。
- 当我使用 HTTPS 访问我的域名时,
/var/log/nginx/access.log没有显示任何结果。
这是我的安全组值
Port range Protocol Source Security groups
80 TCP sg-03d37000000000000 MY_SECURITY_GROUP
All All 0.0.0.0/0 MY_SECURITY_GROUP
All All ::/0 MY_SECURITY_GROUP
443 TCP 0.0.0.0/0 MY_SECURITY_GROUP
当我在 HTTPS 中点击实例 nginx 时
(不安全是因为证书域名不是127.0.0.1,API结果正确)
[ec2-user@ip-123-345-67-89 nginx]$ curl --insecure https://127.0.0.1
{"status":"ok","api":"sdk"}
这是我在尝试访问网站时从谷歌浏览器得到的结果
Google Chrome showing "This site can't be reached"
这是来自 nginx 访问的日志
[ec2-user@ip-123-345-67-89 nginx]$ tail -f /var/log/nginx/access.log
AWS_IP - - [01/Oct/2020:14:02:48 +0000] "GET / HTTP/1.1" 200 56 "-" "ELB-HealthChecker/2.0" "-"
MY_IP - - [01/Oct/2020:14:02:50 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ..." "123.345.67.89"
AWS_IP - - [01/Oct/2020:14:02:57 +0000] "GET / HTTP/1.1" 200 56 "-" "ELB-HealthChecker/2.0" "-"
AWS_IP - - [01/Oct/2020:14:03:03 +0000] "GET / HTTP/1.1" 200 56 "-" "ELB-HealthChecker/2.0" "-"
127.0.0.1 - - [01/Oct/2020:14:03:10 +0000] "GET / HTTP/1.1" 200 27 "-" "curl/7.61.1" "-"
AWS_IP - - [01/Oct/2020:14:03:12 +0000] "GET / HTTP/1.1" 200 56 "-" "ELB-HealthChecker/2.0" "-"
到目前为止,我认为我的 AWS 配置和实例之间存在问题,因为一切都在实例上运行。
但 AWS Config 对我来说看起来不错,所以我对问题的根源没有其他想法。
任何帮助将不胜感激。 非常感谢您阅读所有这些内容。
【问题讨论】:
-
您能说明一下您的设置吗?我看到您有
ELB-HealthChecker,所以您正在使用应用程序负载均衡器? “安全组值”适用于 ALB 还是您的实例?如果您有 ALB,您在 ALB 或实例上的何处部署 SSL 证书? -
嗨@Marcin,对不起,我认为
single instance已经够清楚了(我不是AWS 专家)。我将单个实例与 Elastic Beanstalk 一起使用。所以没有负载均衡器,证书托管在实例上。基本上我遵循了这个教程:docs.aws.amazon.com/elasticbeanstalk/latest/dg/… -
您的日志显示来自“ELB-HealthChecker/2.0”的条目。如果没有负载均衡器,它从何而来?
-
就是这样!谢谢你,小伙伴。在我的 Elastic Beanstalk 环境中,
Configuration > Capacity下的environment type设置为 Load Balanced。我将其更改为 Single Instance,它现在可以工作了。我的错误是猜测 Elastic Beanstalk 配置从 PHP(我以前的)到 Docker 是一样的。您可以将此作为答案发布,以便我解决此问题。 -
没问题,谢谢。
标签: amazon-web-services nginx https