企业级Nginx HTTPS配置需构建四层防线:加密传输(OV/通配符证书+600权限私钥)、协议加固(TLSv1.2+、强密套件、OCSP装订)、访问控制(强制HTTPS、HTTP/2、HSTS)、攻击防护(隐藏版本、限方法、禁敏感路径、IP白名单与身份校验)。

企业级Nginx HTTPS配置不是简单加上证书就完事,核心在于构建“加密传输+协议加固+访问控制+攻击防护”四层防线。重点不在能不能用HTTPS,而在于能不能防住中间人、降级攻击、TLS漏洞利用和自动化扫描探测。
选对证书类型与部署路径
企业生产环境不建议用纯DV免费证书裸奔,尤其涉及用户登录、指令下发或敏感数据交互(如Pi0 VLA机器人控制中心)。推荐组合:
- 主域名使用OV证书(验证企业主体),增强终端用户信任,满足等保2.0基础要求
- 若含多子域(如api.vla.example.com、web.vla.example.com),优先采购通配符OV证书,避免证书管理碎片化
- Let’s Encrypt仅用于非核心测试环境或CI/CD流水线预发布网关,必须配合自动续期+健康检查(
certbot renew --dry-run每日校验) - 证书私钥权限严格设为
600,存放路径避开Web可读目录(如/etc/nginx/ssl/private/而非/var/www/)
强制HTTPS与现代TLS协议栈
HTTP端口(80)只做301跳转,不承载任何业务逻辑;HTTPS端口(443)必须启用HTTP/2并禁用所有不安全协议。
- 在server块中明确声明:
listen 443 ssl http2; - 禁用TLSv1.0/v1.1:
ssl_protocols TLSv1.2 TLSv1.3; - 指定强密码套件(优先ECDHE + AES-GCM):
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; - 开启OCSP装订:
ssl_stapling on; ssl_stapling_verify on;,减少客户端证书状态查询延迟
隐藏指纹+限制非法请求
攻击者第一件事就是探测服务版本和允许方法——这是最易被忽略的暴露面。
- 全局关闭版本标识:
server_tokens off;(放在http块内,非server块) - 拒绝TRACE/TRACK方法(防XST攻击):
if ($request_method ~ ^(trace|track)$) { return 405; } - 限制HTTP方法仅允许GET/POST/HEAD/PUT/DELETE:
if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE|OPTIONS|PATCH)$) { return 405; } - 禁止访问.git、.env、.htaccess等敏感路径:
location ~ /\.(git|env|ht|svn) { deny all; }
身份认证与反向代理协同加固
HTTPS只是传输层加密,真正的访问控制需结合反向代理层的身份验证。以Pi0 VLA为例:
- 在Nginx upstream前加Basic Auth或JWT校验,避免后端服务直面公网
- 使用
auth_request模块对接内部OAuth2服务,实现统一身份网关 - 对关键路径(如
/api/control)启用IP白名单+二次令牌校验(如X-Auth-Token头) - 记录完整访问日志(含$remote_user、$http_x_forwarded_for、$request_time),日志格式启用JSON便于SIEM接入


















