🔧 Nginx 自定义端口 HTTPS 转发配置
📌 场景说明
本配置用于以下场景:
- 操作系统:Ubuntu
- 服务器软件:Nginx
- 自定义端口(替换为具体端口号)
- 支持通过域名访问
https://yourdomain.com
(替换为实际域名) - 自动处理用户误用 HTTP 访问的情况
- 后端服务运行在本地端口(替换为实际端口)
✅ 配置示例
server {
listen [端口号] ssl;
server_name yourdomain.com www.yourdomain.com;
# SSL 证书配置
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/key.key;
# TLS 协议设置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# 当客户端以 HTTP 请求误访问 HTTPS 端口,触发 497 错误并跳转
error_page 497 301 https://$http_host$request_uri;
location / {
# 反向代理到本地服务
proxy_pass http://127.0.0.1:[后端端口号]/;
# 传递客户端头信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
💡 技术要点解析
listen [端口号] ssl
:监听自定义端口并启用 SSL。error_page 497
:Nginx 专用的错误码,当客户端错误使用 HTTP 请求连接到 SSL 端口时触发,用于实现自动跳转。proxy_pass
:反向代理到本地后端服务(如 Flask / Node.js / Java 服务等)。- 请求头设置可确保后端获取真实客户端 IP 等信息。
⚠️ 注意事项
- 该配置未显式监听非 SSL 的端口,因此如果客户端使用的是 HTTP 访问该端口,在某些情况下会出现连接失败(如 curl 或某些浏览器)。
- 若需完整支持 HTTP 到 HTTPS 的跳转,可添加如下 server 块:
server {
listen [端口号];
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host:[端口号]$request_uri;
}
✅ 使用建议
- 适合需要快速上线自定义端口的 HTTPS 服务。
- 利用
error_page 497
技巧,避免因用户错误使用 HTTP 访问导致的访问失败。 - 如需兼容性更强的解决方案,建议同时监听非 SSL 端口并设置重定向。
评论已关闭