http://stackoverflow.com/questions/3110919/how-do-i-get-the-client-ip-of-a-tornado-request
上面的链接告诉我们如何为请求处理程序派生客户端IP。使用Websocket Handler时怎么样?
感谢。
答案 0 :(得分:3)
如果你使用nginx作为代理服务器,情况会有点复杂,有两种解决方案:
选项1:使用self.request.remote_ip
如果你坚持使用这种方法,你需要配置nginx和你的龙卷风应用程序
步骤1:在nginx服务器块中添加任一个fllowing行:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
或
proxy_set_header X-Real-Ip $remote_addr;
第2步:创建tornado httpserver时,添加xheader选项
server = httpserver.HTTPServer(application, xheaders=True)
然后您可以使用 self.request.remote_ip 立即获取您的远程IP地址
选项2:从HttpRequest标头获取X-Real-Ip
以下代码将直接为您提供远程真实IP:
self.request.headers.get('X-Real-Ip', '')
答案 1 :(得分:2)
class WebSocketHandler
扩展RequestHandler
class WebSocketHandler(tornado.web.RequestHandler):
所以,你可以这样得到ip:
class SocketHandler(tornado.websocket.WebSocketHandler):
def open(self):
logging.info('Client IP:' + self.request.remote_ip)