如何在阿里云 ECS 上配置 Nginx 反向代理 HTTPS?

文章导读
在阿里云 ECS 上配置 Nginx 反向代理 HTTPS,核心是在 Nginx 中监听 443 端口并加载 SSL 证书,再通过 proxy_pass 将加密流量转发到后端服务,适合需要隐藏后端架构且强制加密传输的场景。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

在阿里云 ECS 上配置 Nginx 反向代理 HTTPS,核心是在 Nginx 中监听 443 端口并加载 SSL 证书,再通过 proxy_pass 将加密流量转发到后端服务,适合需要隐藏后端架构且强制加密传输的场景。

先说结论:配置过程主要分为安装 Nginx、申请 SSL 证书、修改 Nginx 配置放行 443 端口三步,重点在于证书路径正确和安全组规则开放。

  • 适合:需要对外提供 HTTPS 服务且后端为 HTTP 服务的场景
  • 先准备:域名解析已生效、阿里云 SSL 证书已下载
  • 验收:浏览器地址栏显示锁形图标且无安全警告

命令速用版

以下命令基于 CentOS/Alibaba Cloud Linux 系统,Ubuntu 请将 yum 替换为 apt:

如何在阿里云 ECS 上配置 Nginx 反向代理 HTTPS?
# 安装 Nginx
sudo yum install nginx -y

# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx

# 检查配置语法
sudo nginx -t

# 重载配置
sudo nginx -s reload

为什么会这样

Nginx 作为反向代理,位于客户端和后端服务之间。客户端请求先到达 Nginx,Nginx 解密 HTTPS 流量后,再以 HTTP 或 HTTPS 协议转发给后端。这样做的好处是后端服务无需关心证书管理,且可以隐藏后端真实 IP 和端口,同时由 Nginx 统一处理加密解密,减轻后端压力。

分步处理

步骤 1:准备环境与证书
确保 ECS 已安装 Nginx。登录阿里云控制台,在“数字证书管理服务”中申请免费 SSL 证书,下载 Nginx 格式的证书文件(通常包含 .pem 和 .key 文件),上传至服务器目录,例如 /etc/nginx/ssl/。

步骤 2:配置 Nginx
编辑配置文件,通常位于 /etc/nginx/conf.d/ 或 /etc/nginx/nginx.conf。新增一个 server 块监听 443 端口:

如何在阿里云 ECS 上配置 Nginx 反向代理 HTTPS?
server {
    listen 443 ssl;
    server_name your_domain.com;
    ssl_certificate /etc/nginx/ssl/your_cert.pem;
    ssl_certificate_key /etc/nginx/ssl/your_key.key;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

步骤 3:放行安全组
在阿里云 ECS 控制台,找到实例的安全组配置,添加入站规则,协议选择 TCP,端口范围填写 443,授权对象为 0.0.0.0/0。

怎么验证是否生效

在本地电脑打开浏览器访问 https://your_domain.com,查看地址栏是否有锁形图标。也可使用命令行测试:

如何在阿里云 ECS 上配置 Nginx 反向代理 HTTPS?
curl -v https://your_domain.com

如果返回 HTTP 200 且显示 SSL 握手成功,说明配置生效。同时检查 Nginx 错误日志 /var/log/nginx/error.log 确认无报错。

常见坑

1. 安全组未开放 443 端口,导致外部无法访问。
2. 证书文件路径填写错误,Nginx 启动失败。
3. 后端服务未启动或防火墙拦截了 Nginx 到后端的转发请求。
4. 域名解析未生效,需确认 DNS 已指向 ECS 公网 IP。

参考来源

  • 阿里云开发者社区:配置 Nginx 反向代理实现 ECS 通过自定义域名内网访问 OSS
  • 阿里云开发者社区:使用 Nginx 反向代理为域名配置 SSL 证书实现 HTTPS 访问
  • 阿里云开发者社区:为 ECS 上的网站配置域名并使用 Nginx 实现 HTTPS 安全访问