mcdanlj
(Michael K Johnson)
16 Luglio 2026, 1:02pm
1
Negli ultimi mesi (non sono sicuro di quando sia iniziato esattamente), ho notato che la mia configurazione esterna di nginx, come documentato in Add an offline page to display when Discourse is rebuilding or starting up , per inoltrare l’indirizzo IP reale, viene ignorata.
Questa configurazione esterna di nginx ha funzionato per anni:
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;
Ora vedo tutto il traffico attribuito alla rete docker interna nello spazio RFC1918, come segue:
Questo sta ovviamente interrompendo la “applicazione di questa penalità ad altri utenti che condividono questo indirizzo IP” e tutti gli altri usi dell’indirizzo IP remoto reale.
Mi aspetto che questo sia stato affrontato da qualche parte e che io stia solo cercando male. Ma apprezzerei dei suggerimenti su cosa potrebbe essere cambiato, a cui devo adattarmi.
pfaffman
(Jay Pfaffman)
16 Luglio 2026, 1:27pm
2
Ricordo di aver letto qualcosa a riguardo di recente, ma non riesco a trovarlo neppure io. Handling the "chain of trust" of the end user's real IP - #8 by supermathie include un link al template di Cloudflare, che penso possa essere un buon modello.
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
Ecco cosa sto facendo e sembra funzionare ancora (al momento della versione “Discourse 2026.6.0-latest - GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub versione 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
16 Luglio 2026, 2:39pm
3
Probabilmente correlato a questo commit: FIX: nginx sample configuration should be setting x-f-f to the end us… · discourse/discourse@b4a3389 · GitHub
Questo potrebbe esserti utile:
Contesto
Discourse deve essere consapevole dell’indirizzo IP reale dell’utente finale.
Tuttavia, un utente finale non si connette mai direttamente a Discourse, poiché è sempre presente uno o più server web upstream (nginx in esecuzione nel container Discourse). Pertanto, abbiamo bisogno di un modo per trasmettere queste informazioni a Discourse in modo affidabile.
L’intestazione x-forwarded-for è la soluzione. In questo argomento descriverò i meccanismi specifici per gestire correttamente ques…
mcdanlj
(Michael K Johnson)
16 Luglio 2026, 3:16pm
4
Come al solito, pubblicare e vedere le risposte mi aiuta a trovare altri post simili. ad es.
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]
Grazie a tutti! Ora devo configurare set_real_ip_from nell’nginx del container!
Userò comunque l’intero spazio RFC1918. Per riferimento di chiunque altro, questo sarebbe:
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)
16 Luglio 2026, 5:07pm
5
Non funziona per me.
Ora capisco perché ha smesso di funzionare per me a partire dal commit di riferimento: ha rotto la sostituzione di set_real_ip che avevo in uso da anni. La logica di renderlo più robusto è sensata, e questa è una strada migliore; un cambiamento che rompe la compatibilità e poi dovrebbe rompere meno cose in futuro.
Non so perché la sostituzione di after_bundle_exec non venga applicata, ma passerò a inserire i file manualmente.
Questo funziona per me; lo condivido per la prossima persona:
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;