Eu tenho um servidor web Nginx dentro de uma LAN que está sendo endereçada da internet pelo NAT. A variável $server_addr
contém o endereço de LAN interno do servidor. Existe uma maneira de mapear o endereço IP externo (exposto à Internet) do servidor da Web para uma variável Nginx?
O nginx se liga a todas as interfaces por padrão, ele não se importa com os endereços IP da interface. Assim, serve para qualquer endereço IP, seja a solicitação via WAN ou LAN.
Você precisa configurar um DNS dinâmico para seu domínio. Seu servidor conteria um daemon que atualiza o novo IP externo para o provedor de DNS dinâmico. Em seguida, todos os clientes usariam o nome DNS dinâmico para se conectar ao servidor.
Outra alternativa é configurar um servidor DNS na LAN, que resolveria o nome de domínio do servidor para o endereço IP da LAN e, em seguida, faria os clientes da LAN usarem esse servidor DNS.
Resolvi o problema com um cronjob para atualizar um arquivo de mapeamento para o endereço IP externo: