mcdanlj
(Michael K Johnson)
Julho 16, 2026, 1:02pm
1
Nos últimos meses (não tenho certeza exatamente quando isso começou), notei que minha configuração externa do nginx, conforme documentado em Add an offline page to display when Discourse is rebuilding or starting up , para encaminhar o endereço IP real, está sendo ignorada.
Essa configuração externa do nginx funcionou por anos:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
Agora, estou vendo todo o tráfego atribuído à rede interna do Docker no espaço RFC1918, como mostrado abaixo:
Isso obviamente está quebrando a funcionalidade de “aplicar essa penalidade a outros usuários que compartilham este endereço IP” e todos os outros usos do endereço IP remoto real.
Acho que isso já foi resolvido em algum lugar e eu só estou pesquisando de forma inadequada. Mas eu apreciaria dicas sobre o que pode ter mudado, para que eu possa me adaptar.
pfaffman
(Jay Pfaffman)
Julho 16, 2026, 1:27pm
2
Lembro-me de algo sobre isso recentemente, mas também não consigo encontrar. Handling the "chain of trust" of the end user's real IP - #8 by supermathie inclui um link para o modelo da Cloudflare, que acho que pode ser um bom exemplo.
run:
- file:
path: /etc/nginx/conf.d/outlets/server/real-ip-header.conf
chmod: 644
contents: |
real_ip_header cf-connecting-ip;
- exec:
cmd:
# avoid the trap of specifying both URLs on one curl line; the data might not have a final newline
# print sprintf looks dubious at first, but avoids the problem of "how many times do you backslash a \\\\n"
- curl -s https://www.cloudflare.com/ips-v4/ | awk '{print sprintf("set_real_ip_from %s;", $0)}' > /etc/nginx/conf.d/outlets/server/set-real-ip-from-cloudflare.conf
- curl -s https://www.cloudflare.com/ips-v6/ | awk '{print sprintf("set_real_ip_from %s;", $0)}' >> /etc/nginx/conf.d/outlets/server/set-real-ip-from-cloudflare.conf
Aqui está o que estou fazendo e parece que ainda funciona (até “Discourse 2026.6.0-latest - GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub versão 5c507d8359f4d6e8a5d98780c622d51cedbd9bd7”)
after_bundle_exec:
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: "types {"
to: |
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.11.0/24;
set_real_ip_from 172.16.0.0/12;
set_real_ip_from 10.0.0.0/8;
real_ip_recursive on;
real_ip_header X-Forwarded-For;
types {
chapoi
Julho 16, 2026, 2:39pm
3
Provavelmente relacionado a este commit: FIX: nginx sample configuration should be setting x-f-f to the end us… · discourse/discourse@b4a3389 · GitHub
Isso pode ajudar você:
Contexto
O Discourse precisa ter conhecimento do endereço IP real do usuário final.
No entanto, um usuário final nunca se conecta diretamente ao Discourse, pois sempre há um ou mais servidores web upstream (nginx rodando no container do Discourse) em funcionamento. Assim, precisamos de uma maneira de passar essas informações para o Discourse de forma confiável.
O cabeçalho x-forwarded-for é a solução. Neste tópico, descreverei os mecanismos específicos para lidar adequadamente com essas inform…
mcdanlj
(Michael K Johnson)
Julho 16, 2026, 3:16pm
4
Como de costume, postar e ver as respostas me ajuda a encontrar outros posts semelhantes. por exemplo
Hi,
I have researched quite a lot but nothing seems to work with me.
I have a discourse setup installed. And I have this remote reverse proxy server that acts as a HTTPS layer between the user and the main discourse server..
[image]
I have included these revers proxy settings properly.. But why does it still show my Reverse Proxy server’s IP Address (hostname to be specific)
[image]
Obrigado, pessoal! Agora vou configurar o set_real_ip_from no nginx do container!
Vou usar todo o espaço RFC1918, no entanto. Para referência de qualquer outra pessoa, seria:
after_bundle_exec:
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: "types {"
to: |
set_real_ip_from 192.168.0.0/16;
set_real_ip_from 172.16.0.0/12;
set_real_ip_from 10.0.0.0/8;
real_ip_recursive on;
real_ip_header X-Forwarded-For;
types {
mcdanlj
(Michael K Johnson)
Julho 16, 2026, 5:07pm
5
Isso não está funcionando para mim.
Agora entendo por que parou de funcionar para mim a partir do commit referenciado; ele quebrou a substituição de set_real_ip que eu tinha em vigor há anos. A justificativa para torná-lo mais robusto é sensata, e esta é uma melhor abordagem; uma mudança que quebra a compatibilidade agora, mas deve causar menos problemas no futuro.
Não sei por que a substituição de after_bundle_exec não está sendo aplicada, mas vou mudar para inserir arquivos.
Isso funciona para mim; compartilhando para a próxima pessoa:
run:
- file:
path: /etc/nginx/conf.d/outlets/server/real-ip-recursive.conf
chmod: 644
contents: |
real_ip_recursive on;
- file:
path: /etc/nginx/conf.d/outlets/server/real-ip-header.conf
chmod: 644
contents: |
real_ip_header X-Forwarded-For;
- file:
path: /etc/nginx/conf.d/outlets/server/set-real-ip-from.conf
chmod: 644
contents: |
set_real_ip_from 192.168.0.0/16;
set_real_ip_from 172.16.0.0/12;
set_real_ip_from 10.0.0.0/8;