相关疑难解决方法(0)

在本地Rails开发环境中获取真实的IP地址

我有Rails 2.3.8,Ruby 1.8.7,Mongrel Web Server和MySQL数据库.

我处于开发模式,我需要找到真正的IP地址

当我使用时,request.remote_ip我正在获取IP127.0.0.1

我知道我得到了127.0.0.1因为我在本地机器上开发..但即使我在本地机器上,有没有办法获得真正的IP地址?

我在我的控制器中使用下面提到的这些,我得到的就是127.0.0.1视图中的所有这些.

request.remote_ip
request.env["HTTP_X_FORWARDED_FOR"]
request.remote_addr
request.env['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)

geocoding ruby-on-rails ip-address

41
推荐指数
5
解决办法
4万
查看次数

Rails - 如何获取访问者的IP地址?

我需要将访问者的IP地址存储到我们的数据库中,这是我尝试这样做的方式:

@ip = request.remote_ip
@ip = request.env['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下,即使我将应用程序部署到Amazon EC2实例,该@ip变量也存储了值127.0.0.1.

当我检查http://www.whatismyip.com/,它表明我的IP为109.175.XXX.X.

那么,为什么ruby变量总是显示127.0.0.1地址?我如何获得真正的IP?


编辑: 这是以下输出:

request.env['HTTP_X_FORWARDED_FOR'] => 
request.remote_ip => 127.0.0.1
request.env['REMOTE_ADDR'] => 127.0.0.1
request.ip => 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

我认为问题就在我身边,但我发送了3个朋友的链接,所有人都看到了相同的IP,只有127.0.0.1.

我整天都在解决这个问题但仍然没有成功.

谢谢

ruby ip ruby-on-rails request

14
推荐指数
2
解决办法
1万
查看次数

使用nginx + Unicorn + rails的IP地址错误

我检查控制器中的ip-address

request.env['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)

这在我的测试环境中工作正常.但是在使用nginx + unicorn的生产服务器上,我总能得到127.0.0.1.

这是我的网站的nginx配置:

  upstream unicorn {
  server unix:/tmp/unicorn.urlshorter.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  # server_name example.com;
  root /home/deployer/apps/urlshorter/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}
Run Code Online (Sandbox Code Playgroud)

nginx unicorn ruby-on-rails-3

11
推荐指数
3
解决办法
8476
查看次数

从Google Compute Engine网络负载均衡器后面访问外部客户端IP

我在Google Container Engine上运行Ruby on Rails应用程序(在Nginx模式下使用Passenger).这些pod位于GCE网络负载平衡器后面.我的问题是如何Client IP从Rails应用程序内部访问外部.

这里的Github问题似乎提出了一个解决方案,但我运行了建议:

for node in $(kubectl get nodes -o name | cut -f2 -d/); do
  kubectl annotate node $node \
    net.beta.kubernetes.io/proxy-mode=iptables;
  gcloud compute ssh --zone=us-central1-b $node \
    --command="sudo /etc/init.d/kube-proxy restart";
done
Run Code Online (Sandbox Code Playgroud)

但我仍然得到一个REMOTE_ADDR标题10.140.0.1.

关于如何访问真实的想法Client IP(用于地理位置)?

编辑:为了更清楚,我所知道的,从里面Rails的访问客户端IP的方式,但所有这些解决方案都让我内部Kubernetes IP,我相信GCE网络负载平衡器未配置(或者不能)发送真实的客户端IP.

google-compute-engine

7
推荐指数
1
解决办法
1873
查看次数

如何在Rails中获取客户端的IP地址?

我在我的控制器中有一个函数,它调用另一个函数来形成需要输入ip地址的模型

  def get_location_users
    if current_user
      return current_user.location_users
    else

      l = Location.find_by_ip(request.remote_ip)

      lu = LocationUser.new({:location_id => l.id, :radius => Setting.get("default_radius").to_i})
      return [lu]
    end
  end
Run Code Online (Sandbox Code Playgroud)

从我收集的remote.request_ip给你的IP地址,但是当我用request.remote_ip调用该函数时,对象是零.如果我输入静态IP地址虽然它产生正确的输出.如果remote.request_ip不这样做,获取IP地址的正确方法是什么?

当我尝试在控制台中输入"request.remote_ip"时,它会从主"返回"未定义的局部变量或方法"请求"

ruby-on-rails ruby-on-rails-3

4
推荐指数
1
解决办法
5725
查看次数

如何用红宝石获取访问者的IP?

我和Sinatra一起使用红宝石.我想获取访问者的公共IP并将其保存在数据库中,但不知道如何获取IP ...抱歉,但我还没有找到办法做到这一点.伙计们可以帮帮我吗?谢谢!

ruby sinatra

1
推荐指数
1
解决办法
1190
查看次数