我的服务器没有公共IP地址,所以我不知道如何获取真实客户端的IP地址。
这是我的nginx的配置:
location / {
proxy_pass http://domain1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
在我的Rails应用程序的控制器中,request.ip
和request.remote_ip
都返回我服务器的网关地址。
我如何获得客户的真实IP?
如何从Rails请求中获取X-Forwarded-For值?
答案 0 :(得分:20)
Rails应该是为我们自动完成的,但它似乎被当前的3.x
打破了我正在使用它:
def ip() request.env['HTTP_X_FORWARDED_FOR'] || request.remote_ip end
答案 1 :(得分:6)
您应该获取标头值X-forwarded-for