Cette ligne est nécessaire pour que cela fonctionne.
Sans elle, toutes les requêtes affichent encore l’adresse IP du load balancer.
Je le sais car mon Discourse était en panne à cause d’erreurs 429.
Au cas où ce ne serait pas clair, voici mon infrastructure :
utilisateur > haproxy > discourse
Bien sûr, Discourse inclut un proxy inverse nginx.
J’ai inclus les en-têtes de transfert dans haproxy, mais le nginx interne de Discourse ne prenait pas en compte l’en-tête forwarded for. J’ai dû ajouter les 2 lignes dans mon premier message et redémarrer le conteneur pour que cela fonctionne.
Utilisez-vous une configuration à deux conteneurs ?
Je ne pense pas qu’il existe de variable d’environnement intégrée pour les adresses IP de l’équilibreur de charge personnalisé, car nginx ne lit pas nativement ces variables pour le bloc server.
De plus, si vous avez modifié manuellement la configuration de nginx à l’intérieur du conteneur en cours d’exécution, elle sera effacée la prochaine fois que vous reconstruirez.
Je pense que pour rendre cela permanent et survivre aux reconstructions, vous devez utiliser la commande replace dans votre fichier app.yml (ou web_only.yml si vous avez une configuration à deux conteneurs) — descendez tout en bas de votre fichier .yml jusqu’à la section run: et ajoutez ce bloc. Cela indique au constructeur de Discourse d’injecter automatiquement vos paramètres d’adresse IP réelle après l’ouverture du bloc server { :
run:
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: /server.+{/
to: |
server {
set_real_ip_from 192.168.1.100; ## Remplacez par l'adresse IP/sous-réseau réelle de votre équilibreur de charge
real_ip_header X-Forwarded-For;
real_ip_recursive on;