nginx 直接访问时正确的远程地址

nginx 直接访问时正确的远程地址

我有一个简单的nginx站点配置定义如下:

server {
  listen   8082;
  server_name localhost;
  root   /var/www/server.com/public;



  add_header direct_address $remote_addr;   

  real_ip_header X-Forwarded-For;
  set_real_ip_from 0.0.0.0/0;

  add_header load_balancing_address $remote_addr;   
  ... more stuff here ...

}

$remote_addr 设置不正确,显示 dom0 地址。该地址附加到响应标头中'直接地址' 标头。

这是传递以下变量的负载平衡背后的原因:

real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;

当请求通过负载平衡时,在“load_balancing_address”标头中设置正确的 IP [客户端机器的 IP]。

我想知道为什么在直接访问服务器时(没有首先通过负载平衡)dom0显示 IP 地址。

答案1

最终发现问题出在 dom0 和 domU 之间的一些路由问题,所以与 nginx 无关。

domU 显示为远程地址,dom0

服务器提供商修复了这个问题,我猜这是有关的

我设法在 dom0 上配置了 NAT,但无法正常工作。从 domU 发出的传出流量使用的是原始 domU ip 地址,而不是 dom0 ip 地址,并且请求无法返回到 domU。

我发现 MASQUERADING 未设置。

需要设置以下规则:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

相关内容