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