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

Nginx能否同时代理HTTP和HTTPS后端?求双端口监听配置示例

Nginx 反向代理配置方案

以下是满足你需求的完整Nginx配置示例,包含HTTP(80端口)和HTTPS(443端口)的路径区分、TLS强制启用及身份认证配置:

http {
    # HTTP 80端口配置:处理非敏感路径
    server {
        listen 80;
        server_name your_domain.com; # 替换为你的实际域名

        # 匹配HTTP专属路径 /api/plain_http/
        location /api/plain_http/ {
            # 反向代理到后端服务,替换为你的后端地址(如http://127.0.0.1:8080/)
            proxy_pass http://your_backend_service:port/;
            
            # 传递必要请求头给后端
            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;
        }

        # 80端口下非指定路径直接返回404
        location / {
            return 404;
        }
    }

    # HTTPS 443端口配置:处理敏感路径,强制TLS与身份认证
    server {
        listen 443 ssl;
        server_name your_domain.com; # 替换为你的实际域名

        # SSL证书配置,替换为你的证书和私钥路径
        ssl_certificate /etc/nginx/ssl/your_cert.crt;
        ssl_certificate_key /etc/nginx/ssl/your_private.key;

        # 强制启用安全TLS版本,禁用老旧不安全协议
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
        ssl_prefer_server_ciphers off;
        
        # SSL会话缓存优化
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;

        # 启用HSTS,强制浏览器后续请求默认使用HTTPS(可选但推荐)
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

        # 匹配HTTPS专属路径 /api/ssl_http/,并启用身份认证
        location /api/ssl_http/ {
            # 启用Basic Auth身份认证
            auth_basic "Restricted Sensitive API";
            auth_basic_user_file /etc/nginx/.htpasswd; # 替换为你的密码文件路径

            # 反向代理到敏感后端服务,替换为你的后端地址
            proxy_pass http://your_secure_backend_service:port/;
            
            # 传递必要请求头给后端
            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;
        }

        # 443端口下非指定路径直接返回404
        location / {
            return 404;
        }
    }
}

关键配置说明

HTTP 80端口部分

  • listen 80:明确监听80端口处理纯HTTP请求
  • location /api/plain_http/:仅匹配该路径下的请求,转发到对应后端;proxy_pass末尾的/会自动截断请求路径中的/api/plain_http/,若需保留完整路径则去掉末尾的/
  • 非指定路径返回404,避免80端口处理无关请求

HTTPS 443端口部分

  • listen 443 ssl:强制在443端口启用SSL/TLS
  • ssl_protocols:仅启用TLS1.2和TLS1.3,彻底禁用老旧的SSLv3、TLSv1.0等不安全协议
  • auth_basic系列配置:启用HTTP Basic身份认证,密码文件可通过htpasswd工具生成(示例命令:htpasswd -c /etc/nginx/.htpasswd your_username)
  • Strict-Transport-Security:强制浏览器在有效期内仅通过HTTPS访问该域名,防止降级攻击

注意事项

  • 请将配置中的域名、后端地址、证书路径、密码文件路径替换为实际值
  • 若需使用其他身份认证方式(如JWT、OAuth2),可结合Nginx插件或后端服务实现
  • 配置完成后通过nginx -t检查语法,无错误后重启Nginx生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:34:55