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/TLSssl_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
相关产品推荐
相关产品推荐

