网络环境条件及实际调用需求如下图所示:

Nginx 反向代理https域名接口的注意事项_nginx

如图,要点如下:

  • 应用实际请求的协议是 http,而通过 nginx 反向代理的最终接口是 https
  • 应用实际请求的域名是 mynginx.com,而通过 nginx 反向代理的最终接口域名是 api.weixin.com:8080

对于这两点,在配置 nginx 反向代理时,要注意正确设置 HostX-Forwarded-Proto 两个 header,否则接口不能被正常调用,配置示例如下所示:

location /weixin/ {
    .......
    proxy_set_header Host api.weixin.com:8080; # 要点1:这里要固定配置目标 host,不能使用 $host 变量
    proxy_set_header X-Forwarded-Proto https; # 要点2:这里要固定配置目标 scheme,不能使用 $scheme 变量
    .......
    proxy_pass https://api.weixin.com:8080/;
}

注:本例中 $host 实际值是应用服务器请求的 mynginx.com$scheme 实际值是应用服务器请求的 http。我们要保证最终服务器能正常识别它自己的域名和协议,需要固定设置这两个Header的值。


(END)