Questa riga è necessaria affinché funzioni.
Senza di essa, tutte le richieste mostrano ancora l’IP del load balancer.
Lo so perché il mio Discourse era bloccato con errori 429.
Nel caso non fosse chiaro, questa è la mia infrastruttura:
utente > haproxy > discourse
Discourse include naturalmente un reverse proxy nginx.
Ho incluso gli header di inoltramento in haproxy, ma l’nginx interno di Discourse non rispettava l’header “forwarded for”. Ho dovuto aggiungere le due righe nel mio post originale e riavviare il container per far funzionare tutto.
Non credo che esista una variabile d’ambiente integrata per gli IP dei bilanciatori di carico personalizzati, poiché nginx non legge nativamente queste variabili per il blocco server.
Inoltre, se hai modificato manualmente la configurazione di nginx all’interno del container in esecuzione, verrà cancellata la prossima volta che effettuerai una ricostruzione.
Penso che, per renderla permanente e farla sopravvivere alle ricostruzioni, tu debba usare il comando replace nel tuo app.yml (o web_only.yml se si tratta di un doppio container) — scorri fino in fondo al file .yml alla sezione run: e aggiungi questo blocco. Questo dice al builder di Discourse di iniettare automaticamente le tue impostazioni IP reali dopo l’apertura del blocco server {:
run:
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: /server.+{/
to: |
server {
set_real_ip_from 192.168.1.100; ## Sostituisci con il tuo IP/sottorete del bilanciatore di carico
real_ip_header X-Forwarded-For;
real_ip_recursive on;