核心办法是启用ssl/tls终止,由nginx统一解密后再转发给后端;需配置443端口监听、指定证书路径、启用tlsv1.2/1.3、强密码套件、hsts头,并限制后端暴露、校验代理头、防御攻击及安全健康检查。

核心办法是启用 SSL/TLS 终止,把加密解密环节统一收口到 Nginx 层,既保障传输安全,又避免后端重复处理加解密开销。
配置 HTTPS 入口并终止 SSL
让所有外部请求走 443 端口,由 Nginx 完成解密后再以明文(或内部加密)转发给后端。关键配置包括:
- 监听 443 ssl,指定证书和私钥路径(如
/etc/nginx/ssl/fullchain.pem和/etc/nginx/ssl/privkey.pem) - 启用强 TLS 协议(
ssl_protocols TLSv1.2 TLSv1.3)和现代密码套件(如ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256) - 开启 HSTS 头(
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always),强制浏览器只走 HTTPS
控制后端通信的安全边界
Nginx 到后端服务器的链路虽在内网,仍需防范中间人或横向渗透:
- 后端服务监听地址限制为
127.0.0.1或内网网段(如192.168.10.0/24),禁止公网暴露 - 若后端支持 HTTPS,可配置
proxy_pass https://backend并校验证书(用proxy_ssl_verify on+proxy_ssl_trusted_certificate) - 更轻量的做法是启用代理头部校验,例如检查
X-Forwarded-Proto: https,防止协议降级
补充防御层防常见攻击
仅靠加密不够,还需过滤恶意流量:
- 用
limit_req限制单 IP 请求频率,缓解暴力探测和简单 DDoS - 启用
modsecurity或 WAF 规则集,拦截 SQL 注入、XSS 等典型攻击载荷 - 设置
proxy_set_header X-Real-IP $remote_addr和X-Forwarded-For,确保后端能准确识别真实客户端,便于日志审计与风控
健康检查与故障隔离不降低安全水位
健康检查本身不能削弱安全机制:
- 使用
check type=http时,检查路径应设为专用探针接口(如/healthz),不暴露业务逻辑,且该路径需关闭鉴权以外的所有访问控制 - 避免用
type=tcp健康检查绕过 TLS —— 若后端只监听 HTTPS,检查请求也必须走 HTTPS 并校验证书 - 配合
proxy_next_upstream error timeout http_502 http_503 http_504,自动跳过异常节点,不影响整体可用性











