Tenho um servidor com duas portas Ethernet, uma com endereço IP 192.168.x.y
, a outra com um endereço IP diferente. O servidor está executando Debian Bookworm e nginx 1.22.1. Esta é a configuração do meu site 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
está definido como 192.168.x.y
, no entanto, os logs do serviço em execução http://192.168.x.y:<port>/
dizem que ele está recebendo as conexões do endereço IP da outra porta Ethernet. Isso é um problema porque esse serviço está configurado para confiar apenas X-Forwarded-For
em 192.168.x.y
. Por que o nginx está ignorando proxy_bind
?
Editar: Agora reproduzi isso onde o alvo do proxy é apenas um contêiner nginx não modificado. Isso registra claramente que o serviço nginx principal está usando o endereço IP errado:
<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>"
Encontrei o problema – o NAT do nftables estava alterando o endereço IP. Por que, não tenho ideia, mas como só preciso do NAT em uma interface, alterar
para
não quebrou nenhum NAT que eu realmente queria e corrigiu o NAT indesejado.