Diese Zeile ist erforderlich, damit das funktioniert.
Ohne sie haben alle Anfragen weiterhin die IP-Adresse des Load Balancers.
Das weiß ich, weil mein Discourse wegen 429-Fehlern ausgefallen war.
Falls es nicht klar ist, so sieht meine Infrastruktur aus:
Benutzer > haproxy > discourse
Discourse beinhaltet natürlich einen nginx rproxy.
Ich habe die Weiterleitungs-Header in haproxy eingefügt, aber der interne nginx von Discourse hat den „Forwarded-For“-Header nicht beachtet. Ich musste die zwei Zeilen in meinem Eröffnungspost hinzufügen und den Container neu starten, damit es funktioniert.
Ich glaube nicht, dass es eine integrierte Umgebungsvariable für benutzerdefinierte Load-Balancer-IPs gibt, da Nginx diese Variablen für den Server-Block nicht nativ ausliest.
Außerdem werden Änderungen, die du manuell an der Nginx-Konfiguration innerhalb des laufenden Containers vorgenommen hast, beim nächsten Neuaufbau verworfen.
Ich denke, um dies dauerhaft zu machen und Neuaufbauten zu überstehen, musst du den replace-Befehl in deiner app.yml (oder web_only.yml bei Dual-Container-Setup) verwenden. Scrolle ganz nach unten in deiner .yml-Datei zum Abschnitt run: und füge diesen Block hinzu. Er weist den Discourse-Builder an, deine echten IP-Einstellungen automatisch nach dem Öffnen des server {-Blocks einzufügen:
run:
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: /server.+{/
to: |
server {
set_real_ip_from 192.168.1.100; ## Durch deine tatsächliche Load-Balancer-IP/Subnetz ersetzen
real_ip_header X-Forwarded-For;
real_ip_recursive on;