使用Rails和Nginx获取客户端的真实IP地址?

时间:2011-05-26 14:04:38

标签: ruby-on-rails web-services networking nginx ip-address

我的服务器没有公共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.iprequest.remote_ip都返回我服务器的网关地址。

我如何获得客户的真实IP?

如何从Rails请求中获取X-Forwarded-For值?

2 个答案:

答案 0 :(得分:20)

Rails应该是为我们自动完成的,但它似乎被当前的3.x

打破了

我正在使用它:

def ip() request.env['HTTP_X_FORWARDED_FOR'] || request.remote_ip end

答案 1 :(得分:6)

您应该获取标头值X-forwarded-for

http://en.wikipedia.org/wiki/X-Forwarded-For