辛纳特拉应用程序。
<%= request.ip %>如果从本地服务器查看,则给出127.0.0.1 IP地址。
如果从Heroku服务器查看83.245.226.68 IP地址,则不管来自哪个设备。
因此,我猜它返回的是服务器的IP地址,而不是客户端的IP地址。那么如何才能找到客户端的IP地址呢?我是不是误解了request.ip方法?
发布于 2014-10-10 10:17:24
当Rack HTTP Server前面的HTTP Server (例如用于负载平衡、ssl等)没有将客户端IP地址转发到Rack HTTP Server时,就会发生这种情况。在这种情况下,您将获得HTTP的IP地址。
这可以在HTTP服务器(如Nginx和Apache )上配置,您可以在request.ip中获得客户端IP地址。
据我所知,Heroku这样做的方式是,客户端ip地址位于一个名为“x转发-for”的标题中,这是一个以逗号分隔的IP地址列表,最后一个元素是客户机IP。
辛纳特拉:
env['HTTP_X_FORWARDED_FOR'].split(',').lastRails:
request.headers['x-forwarded-for'].split(',').lasthttps://stackoverflow.com/questions/26276775
复制相似问题