我在 nginx 前面有 stunnel 来处理 ssl。 (我知道 nginx 可以处理 ssl,但我正在迁移 nginx,这是必要的步骤。)
Stunnel 和 nginx 在同一个盒子上运行。
如果 nginx 前面没有 stunnel,nginx 会分别将 server_addr 和 server_name 作为盒子的公共 IP 和我正在获取的 url 的域。
现在有了 stunnel,nginx 认为 server_addr 和 server_name 分别是 127.0.0.1 和 localhost。这把事情搞砸了。
我怎样才能让 nginx 获取(或 stunnel 发送)正确的 server_addr 和 server_name?
答案1
但是,由于 Stunnel 是一个代理,不了解 HTTP,因此客户端的 IP 地址丢失了,这有点烦人。
尝试 ngx_http_realip_module 和X-Forwarded-For
支持 Stunnel:
set_real_ip_from 192.168.2.1;
real_ip_header X-Forwarded-For;