我有一台有两个以太网端口的服务器,一个端口的 IP 地址为192.168.x.y
,另一个端口的 IP 地址不同。该服务器运行 Debian Bookworm 和 nginx 1.22.1。这是我的 nginx 站点配置:
server {
server_name <hostname>;
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate <path to cert>
ssl_certificate_key <path to key>
location / {
proxy_bind 192.168.x.y;
proxy_pass http://192.168.x.y:<port>/;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
proxy_bind
设置为192.168.x.y
,但是运行 的服务的日志http://192.168.x.y:<port>/
显示它正在接收来自其他以太网端口 IP 地址的连接。这是一个问题,因为该服务仅配置为信任X-Forwarded-For
。192.168.x.y
为什么 nginx 会忽略proxy_bind
?
编辑:我现在已经重现了这一点,其中代理目标只是一个未修改的 nginx 容器。这清楚地记录了主 nginx 服务正在使用错误的 IP 地址:
<wrong ip> - - [23/Jan/2025:20:42:22 +0000] "GET /index.html HTTP/1.0" 200 615 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0" "<my laptop's ip>"
找到问题了——nftables 的 NAT 正在更改 IP 地址。我不知道为什么,但是因为我只需要在一个接口上使用 NAT,所以更改
到
没有破坏我真正想要的任何 NAT,并且修复了不需要的 NAT。