Nginx 代理转发 HTTPS 服务配置指南
要使用 Nginx 代理转发 HTTPS 服务,你需要进行以下配置:
基本 HTTPS 代理配置
server {
listen 443 ssl;
server_name yourdomain.com;
# SSL 证书配置
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
# SSL 优化参数
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
location / {
proxy_pass https://backend-server:port; # 目标 HTTPS 服务地址
# 基本代理头设置
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;
# HTTPS 代理特定设置
proxy_ssl_verify off; # 是否验证后端证书,生产环境建议开启
proxy_ssl_server_name on;
proxy_ssl_session_reuse off;
}
}
高级配置选项
1. 证书验证(生产环境推荐):
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /path/to/trusted_ca_cert.crt;
proxy_ssl_verify_depth 2;
2. WebSocket 代理支持:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
3. 负载均衡:
upstream backend {
server backend1.example.com:443;
server backend2.example.com:443;
}
server {
...
location / {
proxy_pass https://backend;
...
}
}
HTTP 自动跳转 HTTPS(可选)
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
注意事项
- 确保 Nginx 安装了 --with-http_ssl_module 模块
- 后端服务证书如果是自签名的,需要在 Nginx 配置中信任该证书
- 生产环境建议开启证书验证以提高安全性
- 根据实际需求调整缓冲区大小和超时时间
配置完成后,使用 nginx -t 测试配置是否正确,然后 nginx -s reload 重新加载配置。
nginx 代理https服务但是对外提供http服务
要实现 Nginx 代理 HTTPS 后端服务但对外提供 HTTP 访问,可以通过以下配置实现:
基础配置方案
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass https://backend-server; # 后端HTTPS服务地址
# 必要代理头设置
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;
# HTTPS代理特定配置
proxy_ssl_verify off; # 生产环境建议开启验证
proxy_ssl_server_name on;
}
}
关键配置说明
1. 监听HTTP端口
配置listen 80表示只对外提供HTTP服务
2. 代理HTTPS后端
proxy_pass指向HTTPS协议的后端地址,Nginx会自动处理HTTPS连接
3. 协议头处理
X-Forwarded-Proto $scheme确保后端服务能识别原始请求协议
高级配置建议
1. SSL证书验证(生产环境推荐):
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /path/to/ca.crt;
2. WebSocket支持:
Copy Code
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
3. 性能调优参数:
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
注意事项
- 确保后端HTTPS服务证书有效,否则需设置proxy_ssl_verify off
- 如需同时支持HTTP/HTTPS对外访问,需分开配置监听端口
- 正向代理HTTPS需要特殊模块支持,反向代理无需额外模块
- 生产环境建议开启证书验证以提高安全性
这种配置模式常见于内部服务代理、API网关等场景,既能保证后端通信安全,又能简化前端配置