【问题标题】:Devise logging inaccurate IP address on Heroku在 Heroku 上设计记录不准确的 IP 地址
【发布时间】:2013-11-29 09:33:41
【问题描述】:

使用带有 Heroku 的 Devise trackable 模块,我注意到由于 Heroku 的转发,记录的 IP 不正确。正确的 ip 存储在 HTTP_X_FORWARDED_FOR 中,但 Devise 使用 REMOTE_ADDR,这搞砸了我的地理定位。有什么方法可以告诉 Devise 在不修改 Gem 的情况下使用 HTTP_X_FORWARDED_FOR

谢谢!

【问题讨论】:

  • 您使用的是旧版本的 Devise 吗?我没有看到您在我的 Heroku 应用程序上看到的内容 - 我看到 whatsmyip 在 current_sign_in_iplast_sign_in_ip 字段中报告的 IP 地址。 2年前的设计中有代码为它添加了测试github.com/plataformatec/devise/commit/…
  • 好的,我在这里取得了一些进展。看起来不是 Heroku,而是 Cloudflare 给我带来了麻烦。也就是说,仍然不确定为什么。我认为它可能将正确的地址放在 HTTP_X_REAL_IP 而不是 HTTP_X_FORWARDED_FOR 中。在禁用 Cloudflare 的情况下,我可以正常工作。可能最终就这样离开了。

标签: ruby-on-rails ruby heroku devise geolocation


【解决方案1】:

根据this answer,您必须设置trusted_proxies

在 Rails 3/4 中,您可能可以在 application.rb 中使用config

config.action_dispatch.trusted_proxies = ['<< Heroku load balancer IP >>']

【讨论】:

  • 负载均衡器的 IP 不会发生变化吗?
  • @StephenCorwin 我不知道,你应该在 Heroku 上查看。
  • 是的,负载均衡器有非常动态的地址。我想过只信任所有 IP,但后来它以某种方式丢失了我的实际 IP。想知道我是否可以以某种方式利用 Devise 的会话控制器。
  • @StephenCorwin 正则表达式怎么样,就像链接的答案一样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 2013-05-08
相关资源
最近更新 更多