Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ao usar nginx como reverse proxy, às vezes é necessário passar a porta de origem original da requisição, especialmente quando se trabalha com portas não convencionais. O problema é que o header X-Forwarded-Port não reflete a porta real de entrada, o que pode causar confusões no backend.
Na prática, a configuração padrão do nginx não seta automaticamente esse header para portas customizadas, então é preciso fazer um ajuste manual, usando a diretiva proxy_set_header. A dica é definir algo assim: A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
location /auth/ {
proxy_pass http://otherhost:8090. proxy_set_header Host $host. proxy_set_header X-Real-IP $remote_addr. proxy_set_header X-Forwarded-Port $server_port. }
A variável $server_port passa a porta na qual a requisição foi recebida, garantindo que o backend saiba exatamente qual porta foi usada na entrada. Isso evita problemas de roteamento ou validação de segurança. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
No seu cenário, o segredo está em usar o $server_port na configuração, e não esquecer de testar com diferentes portas para garantir que o header está sendo enviado corretamente.
Quem já precisou fazer algo assim, costuma encontrar dificuldades na primeira tentativa, mas funciona lindamente depois de ajustado. É uma solução simples, mas que evita dores de cabeça na hora do deploy com portas não padrão. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Exato, e na minha experiência, esse tipo de ajuste é ótimo pra evitar falsos positivos na validação de porta, especialmente em ambientes híbridos com múltiplas portas de entrada.
Boa, essa dica do $server_port faz toda a diferença. Já passei por isso em sistemas legados, onde a porta antiga não era passada corretamente. Essa solução resolve lindamente.
E onde o cache ou filas escondem o problema na hora do erro silencioso? Acho que a validação do header ajuda a detectar esses cenários antes que fiquem invisíveis.
hum, só cuidado com o impacto no cache ou na segurança, dependendo do que o backend faz com esse header. Pode abrir brechas se não for bem controlado.