📌 场景说明

本配置用于以下场景:

  • 操作系统: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 端口并设置重定向。

标签: none

上一篇: 用Lark部署企业邮箱教程
下一篇: 没有了

评论已关闭