You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Nginx+Docker+React+EC2时HTTPS连接被拒求助

解决.dev域名HTTPS连接被拒问题

核心问题分析

  • .dev属于Google的顶级域名,已被纳入HSTS预加载列表,Chrome、Firefox等主流浏览器会强制将所有.dev域名的HTTP请求重定向到HTTPS。这意味着只要HTTPS配置存在问题,就会直接触发连接被拒,无法通过HTTP绕开访问域名。
  • 从你的测试结果来看,HTTP访问EC2公网IP正常,说明80端口的Nginx配置、Docker端口映射、EC2安全组/网络ACL都没问题,问题集中在HTTPS(443端口)的配置环节。

排查步骤

1. 验证Nginx配置合法性

进入Docker容器,执行配置检查命令,确认没有语法错误:

docker exec <你的ui服务容器名> nginx -t

如果输出test is successful说明配置语法没问题;如果报错(比如证书路径错误、语法格式问题),根据提示修复即可。

2. 查看Nginx启动日志

检查容器内Nginx的启动日志,定位SSL相关错误:

docker logs <你的ui服务容器名>

常见错误包括:

  • 证书文件找不到(路径配置错误)
  • 私钥权限过高(Nginx要求私钥权限必须为600,否则拒绝加载)
  • 证书链不完整(ssl-bundle.crt仅包含域名证书,缺少中间证书)

3. 检查证书文件的存在和权限

进入容器,确认证书文件存在且权限符合要求:

# 查看文件是否存在
ls -l /etc/ssl/certs/ssl-bundle.crt /etc/ssl/private/private.key

# 修正私钥权限(如果需要)
chmod 600 /etc/ssl/private/private.key

注意:Nginx对私钥的权限管控严格,必须设置为所有者只读,否则会无法加载证书。

4. 本地测试HTTPS连接

在EC2主机上直接访问本地443端口,验证容器内的HTTPS服务是否正常:

curl -v https://localhost

如果返回正常的HTML内容,说明容器内的HTTPS服务没问题,问题可能出在域名解析或证书信任;如果出现SSL certificate problem: self signed certificate类错误,说明证书不被浏览器信任。

5. 确认证书的可信度

如果使用的是自签名证书,由于.dev域名强制HTTPS,浏览器会直接拒绝访问(自签名证书不在浏览器信任列表中)。这种情况下,必须使用可信CA颁发的证书(比如Let's Encrypt的免费证书),才能让浏览器正常信任。

排除其他可能性

  • Amazon Linux 2系统问题:可能性极低,你已确认安全组、网络ACL配置正确,且80端口能正常访问,netstat显示443端口处于监听状态,说明系统层面网络配置无异常。
  • Docker端口映射问题:docker-compose中已配置443:443,且主机443端口处于监听状态,说明映射正常。

内容的提问来源于stack exchange,提问作者azhangrwe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:45:34