Après avoir déployé l'application tornado en utilisant la configuration nginx ci-dessous
upstream frontends {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
Toutes les requêtes IP demandées dans tornado.log seront affichées comme 127.0.0.1, similaire à ce qui suit[I 130125 21:44:54 web:1447] 200 GET / (127.0.0.1) 16.00ms
Comment faire en sorte que l'adresse IP dans tornado.log s'affiche comme la véritable IP lors de l'utilisation du proxy inverse nginx ?
Réponse correcte : en plus de la configuration correcte de nginx, plus important encore, xheaders=True doit être défini dans le serveur http tornado
tornado.httpserver.HTTPServer(Application(), xheaders=True)
Peut être dépassé en tornade
Pour l'obtenir, mais il peut parfois y avoir quelques problèmes, voir ce numéro sur github : https://github.com/facebook/tornado/i...
Le principe est de lire certains en-têtes HTTP
De même, l'implémentation en PHP est la suivante :
S'il s'agit d'un proxy inverse, vous pouvez ajouter une telle configuration à nginx :
proxy_pass http://frontends;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Hôte $http_host;