[PYTHON] Comment obtenir une adresse IP lorsque Tornado + nginx

Lors de l'obtention d'une adresse IP client dans Tornado

#!/usr/bin/python
# -*- coding: utf-8 -*-

from tornado import web,ioloop

class IndexHandler(web.RequestHandler):
    def get(self):
        ip = self.request.remote_ip
        self.write(ip)

handlers = [
    (r'/', IndexHandler),
]

settings = dict(
    debug = True,
)

app = web.Application(handlers, **settings)
app.listen(8000)
ioloop.IOLoop.instance().start()

Vous pouvez l'obtenir à.

Mais avec nginx

http {
    upstream example.server.com {
        server 127.0.0.1:8000;
    }
    server {
        listen 80;
        server_name example.server.com;
        location / {
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_pass example.server.com;
            proxy_next_upstream error;
        }
    }
}

Si vous exécutez tornado avec les paramètres ci-dessus, l'adresse IP sera 127.0.0.1.

IndexHandler de la tornade

class IndexHandler(web.RequestHandler):
    def get(self):
        ip = self.request.headers['X-Real-IP']
        self.write(ip)

Si vous le donnez comme, j'ai pu l'obtenir en toute sécurité.

Puisque nginx se comporte comme un équilibreur de route, c'est naturel quand on y pense, mais au début je ne l'ai pas remarqué et je suis un peu accro. .. ..

Recommended Posts

Comment obtenir une adresse IP lorsque Tornado + nginx
Comment obtenir la version Python
Comment ajouter sudo lors de l'exécution du débogage
Comment démarrer avec Scrapy
Comment démarrer avec Python
Comment démarrer avec Django
Comment se connecter à Docker + NGINX
Comment obtenir l'identifiant du parent avec sqlalchemy
Comment se débarrasser des longues inclusions
Comment obtenir stacktrace en python
Pour obtenir une adresse IP locale par programme
Comment obtenir une sortie colorée sur la console
Comment démarrer Python (Flask) au démarrage d'EC2
[Django] Comment résoudre les erreurs lors de l'installation de mysqlclient
Comment obtenir les résultats de l'identifiant dans Celery
[Django] Comment obtenir des données en spécifiant SQL.
Comment obtenir de l'aide dans un shell interactif
Comment réparer lorsque l'entrée du terminal devient anormale
Comment obtenir des données d'article à l'aide de l'API Qiita
Comment se souvenir quand on oublie un mot
Comment obtenir des éléments de type dictionnaire de Python 2.7
Comment obtenir les fichiers dans le dossier [Python]
Comment installer PyCPX (OSX Yosemite, Canopy)
[Rails] Comment obtenir des informations de localisation à l'aide de l'API de géolocalisation
Comment obtenir le nom de la variable lui-même en python
Comment obtenir plusieurs objets de modèle au hasard dans Django
Comment obtenir le nombre de chiffres en Python
[Ansible] Comment utiliser l'authentification par mot de passe SSH lors de l'exécution d'ansible
Remarques sur la façon d'utiliser lors de la combinaison de pandas.
Comment obtenir un utilisateur connecté avec les forms.py de Django
Comment désactiver la fonction de référence lors de la sortie de PyYaml
Comment accéder avec cache lors de la lecture_json avec pandas
Comment obtenir plus de 1000 données avec SQLAlchemy + MySQLdb
Comment quitter lors de l'utilisation de Python dans Terminal (Mac)
Comment obtenir le verdict de la molette de la souris avec des malédictions Python
Comment écrire plus rapidement en utilisant numpy comme deque
Ce à quoi j'étais accro lors de l'utilisation de Python tornado
[Linux] Comment mettre votre IP dans une variable
Comment obtenir des histogrammes RVB et HSV avec OpenCV
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment lire PyPI
Comment installer pip
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment mettre à jour easy_install
Comment installer Archlinux
Comment utiliser pytest_report_header
Comment redémarrer gunicorn
Comment installer python
Comment héberger virtuel
Comment déboguer le sélénium
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment lire JSON