我有一个简单的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