Beim Abrufen einer Client-IP-Adresse in 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()
Sie können es bei bekommen.
Aber mit 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;
}
}
}
Wenn Sie Tornado mit den oben genannten Einstellungen ausführen, lautet die IP 127.0.0.1.
Also Tornados IndexHandler
class IndexHandler(web.RequestHandler):
def get(self):
ip = self.request.headers['X-Real-IP']
self.write(ip)
Wenn Sie es als geben, konnte ich es sicher bekommen.
Da sich Nginx wie ein Road Balancer verhält, ist es natürlich, wenn man darüber nachdenkt, aber zuerst habe ich es nicht bemerkt und war ein wenig süchtig. .. ..
Recommended Posts