必须设置 proxy_ssl_verify off 以跳过 Nginx 反向代理对后端 HTTPS 证书的校验,该指令仅在 upstream 或 location 块中生效;proxy_pass 必须使用 https:// 协议;还需配置 proxy_ssl_protocols、proxy_ssl_ciphers 和 proxy_ssl_server_name 等基础 TLS 参数。

要在 Nginx 中让反向代理跳过对后端 HTTPS 服务的 SSL 证书校验(比如自签名、过期或域名不匹配的证书),核心是关闭 Nginx 作为“客户端”时的证书验证行为。这不是前端浏览器的警告,而是 Nginx 自己连接后端时主动拒绝握手导致的 502 错误。
必须设置 proxy_ssl_verify off
这是最关键的一步。Nginx 默认开启上游证书校验(proxy_ssl_verify on),必须显式关闭:
- 该指令只能在
upstream块或location块中生效(注意:不能写在server或http级别) - 仅影响 Nginx 主动连接后端 HTTPS 的过程,不影响用户访问 Nginx 的证书验证
- 错误写法:
proxy_ssl_verify off;放在server块里——会被忽略
确保 proxy_pass 使用 https:// 协议
只有当 proxy_pass 指向 https:// 地址时,Nginx 才会触发 SSL 相关指令(如 proxy_ssl_* 系列)。如果写成 http://,所有 SSL 配置都不起作用。
- 正确:
proxy_pass https://backend.example.com;或https://10.0.1.5:8443; - 错误:
proxy_pass http://backend.example.com;(走明文 HTTP,不校验证书但也不加密) - 务必确认后端地址可被 Nginx 服务器直接访问,且端口开放、DNS 解析正常
补充基础 SSL 握手参数
即使跳过证书验证,Nginx 仍需完成 TLS 握手,因此要配置最低限度的协议与加密套件:
-
proxy_ssl_protocols TLSv1.2 TLSv1.3;(避免启用已淘汰的 SSLv3/TLSv1.0) -
proxy_ssl_ciphers DEFAULT;或更明确的组合,例如:ECDHE+AESGCM:HIGH:!NULL:!aNULL:!EXPORT:!DES:!MD5:!PSK:!RC4 -
proxy_ssl_server_name on;(启用 SNI,确保后端能返回对应域名的证书,尤其当后端托管多个 HTTPS 服务时)
不推荐省略的可选优化
虽然不是强制项,但加上这些能让行为更稳定:
-
proxy_ssl_session_reuse off;:避免复用异常会话,防止缓存了失败的握手状态 -
proxy_ssl_verify_depth 1;:配合off时虽无效,但若后续切换为on可快速启用,建议保留 - 不要设置
proxy_ssl_trusted_certificate(除非你同时启用on);若设置了却指向无效路径,反而可能引发额外报错


















