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

AWS EC2配置Nginx反向代理HTTPS转HTTP至容器遇访问问题

问题排查与解决步骤

1. 修复软链接拼写错误

你创建软链接时把sites-enabled拼成了sites-enbled,导致Nginx无法加载自定义配置文件。执行以下命令修正:

# 删除错误的软链接
sudo rm /etc/nginx/sites-enbled/custom.conf
# 创建正确的软链接
sudo ln -s /etc/nginx/sites-available/custom.conf /etc/nginx/sites-enabled/

2. 修正Server Name的域名后缀

配置文件中server_name缺少.com后缀,和实际访问的域名不匹配,Nginx无法匹配到对应的反向代理规则。修改custom.conf中的server_name:

server {
       listen 443 ssl;
       server_name backend.my_ec2instance.com; # 补充.com后缀
       # ... 其他配置
}
server {
       listen 443 ssl;
       server_name frontend.my_ec2instance.com; # 补充.com后缀
       # ... 其他配置
}

3. 修正SSL证书路径与文件配置

你将证书放在/etc/nginx/ssl/目录,但配置中只写了文件名,Nginx会在默认路径查找,导致无法加载证书。同时注意Let's Encrypt的证书和私钥是两个独立文件(一般为fullchain.pem和privkey.pem),不要混用:

server {
       listen 443 ssl;
       server_name backend.my_ec2instance.com;
       # 证书绝对路径
       ssl_certificate /etc/nginx/ssl/fullchain.pem;
       # 私钥绝对路径
       ssl_certificate_key /etc/nginx/ssl/privkey.pem;
       # ... 其他配置
}

如果你确实将证书和私钥合并到了letsencrypt.pem,请将路径改为/etc/nginx/ssl/letsencrypt.pem,但更建议分开存储证书和私钥。

4. 验证Nginx配置并重启服务

执行以下命令检查配置是否存在语法错误:

sudo nginx -t

如果输出test is successful,则重启Nginx生效配置:

sudo systemctl restart nginx

5. 额外排查项

  • 域名解析验证:确认backend.my_ec2instance.com和frontend.my_ec2instance.com已正确解析到EC2实例的公网IP。
  • EC2安全组/网络ACL:再次确认安全组已允许443端口的入站流量,网络ACL也已放行443端口的双向流量。
  • 反向代理头部优化(可选):为了让后端容器获取正确的客户端信息,可在location /块中添加以下配置:
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:25:26