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