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

配置Nginx反向代理HTTP转HTTPS时无证书校验仍可用的原因问询

问题描述

现有两台部署Nginx的机器:

  • Machine A(服务器):在4435端口启用HTTPS,使用自签名证书
  • Machine B(客户端):配置Nginx反向代理,将/site_manager路径的请求转发至Machine A的4435端口HTTPS服务,且Machine B未安装该自签名证书

测试结果:

  • 通过Machine B的Nginx反向代理访问Machine A可正常工作(不符合预期)
  • 直接用curl访问Machine A的4435端口则失败(符合预期)

请问为何Nginx反向代理无需安装信任证书就能和Machine A建立HTTPS连接?

原因解析

核心原因是Nginx反向代理默认关闭了后端SSL证书的校验功能:

  • 当Nginx作为反向代理发起HTTPS请求到后端服务器时,默认不会验证对方证书的合法性,哪怕是自签名证书,也能正常建立连接。
  • 而curl默认会严格校验服务器证书是否在系统信任列表中,自签名证书不在信任列表里,所以直接访问会失败,这是符合预期的安全行为。

如果要让Nginx反向代理也校验后端证书,需要在反向代理的location配置中添加以下指令:

  • proxy_ssl_verify on;:开启证书校验开关
  • proxy_ssl_trusted_certificate /path/to/your-self-signed.crt;:指定信任的自签名证书路径
  • proxy_ssl_verify_depth 2;:设置证书链的校验深度

示例配置如下:

location /site_manager {
    proxy_pass https://MachineA:4435;
    # 开启证书校验
    proxy_ssl_verify on;
    # 指定信任的自签名证书文件
    proxy_ssl_trusted_certificate /etc/nginx/certs/machineA-selfsigned.crt;
    # 设置证书校验深度
    proxy_ssl_verify_depth 2;
}

添加上述配置后,若Machine B未配置信任Machine A的自签名证书,Nginx反向代理就会像curl一样连接失败。


内容的提问来源于stack exchange,提问作者Mohamed Emad Emsawy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:34:55