在 nginx 中配置 https 后端节点,只需在 upstream 块中使用 server 指令指定地址和端口,并在 proxy_pass 中通过 https:// 协议头发起请求。nginx 默认会对后端进行 ssl/tls 握手验证,若需跳过证书校验可添加 ssl_verify off; 参数。

如何定义 upstream 中的 HTTPS 服务器组
在 nginx.conf 的 http 上下文中定义 upstream 块,使用 server 指令列出后端节点。每个节点由 IP 或域名及端口组成,例如 server backend1:443;。该组名将在后续 location 中被引用。

upstream https_backend {
server 192.168.1.10:443;
server 192.168.1.11:443;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass https://https_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
上述配置将来自 example.com 的请求转发至两个后端节点的 443 端口。Nginx 会执行标准的 SSL 握手,若后端证书有效则建立加密连接。轮询策略为默认的加权轮询,按顺序分配请求。
如何处理后端证书无效或不信任的情况
当后端使用自签名证书或证书链不完整时,Nginx 默认会拒绝连接并返回 502 Bad Gateway。可通过在 upstream 块中添加 ssl_verify off; 来禁用证书验证,允许与不安全后端的通信。

upstream https_backend_insecure {
server 192.168.1.20:443 ssl_verify=off;
server 192.168.1.21:443 ssl_verify=off;
}
server {
listen 80;
server_name insecure.example.com;
location / {
proxy_pass https://https_backend_insecure;
}
}
此配置中,ssl_verify=off 使 Nginx 忽略后端证书的合法性检查。注意,这仅适用于内部可信网络或测试环境,生产环境中应确保证书有效以保障安全性。轮询仍按默认方式工作,但不再因证书错误而中断连接。
当某个 HTTPS 后端节点宕机时轮询行为如何变化
若 upstream 中的某个 HTTPS 节点不可达(如宕机或网络故障),Nginx 会将该节点标记为暂时不可用,并将后续请求轮询至其他健康节点。默认重试次数为 1 次,失败后返回 502。可通过 max_fails 和 fail_timeout 调整容错策略。
upstream https_backend_resilient {
server 192.168.1.10:443 max_fails=3 fail_timeout=30s;
server 192.168.1.11:443 max_fails=3 fail_timeout=30s;
}
在此配置下,若节点连续失败 3 次,将在 30 秒内被排除出轮询池。期间所有请求将分发至剩余节点。恢复后自动重新加入。此机制确保在高可用场景下,单个 HTTPS 后端故障不会导致服务中断。


















