【问题标题】:Mongrel server trying to perform GET on 127.0.0.1Mongrel 服务器尝试在 127.0.0.1 上执行 GET
【发布时间】:2011-08-21 02:48:18
【问题描述】:

我最近启动了一个从 github 签出的 Rails 3 项目。该应用程序使用子域来访问帐户,因此我必须在我的 etc/hosts/ 文件中执行一些小更改,以便应用程序正确导航。我现在正在尝试登录应用程序,但在终端中看到一个非常奇怪的请求:

Started GET "/session/new" for 127.0.0.1 at Sun May 08 13:48:38

我正在使用 mongrel 服务器,它在 ip 0.0.0.0 上运行,所以我无法弄清楚为什么应用程序正在查找 127.0.0.1。我在 OS X 上,所以我也停止了我的本地 apache 服务器。

我已经在我的应用程序中删除了字符串 "127.0.0.1" 的所有痕迹,但仍然看到对该 IP 发出的请求。

有人知道为什么会这样吗?

编辑:主机文件如下:

##
# Host Database 
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost ger.mpt.local
255.255.255.255 broadcasthost
#::1             localhost 
#fe80::1%lo0        localhost

编辑:我还应该提到,当我提交登录表单时,我从 firebug 获得了 302 重定向状态。

谢谢, 齿轮

【问题讨论】:

  • 你在浏览器中输入什么网址?
  • "gearoid.myapp.local" 在 etc/hosts 文件中解析为 ip 0.0.0.0
  • 没关系,你不用担心,0.0.0.0表示监听所有接口,127.0.0.1是回环接口的默认IP。

标签: ruby-on-rails localhost mongrel


【解决方案1】:

嗯。 0.0.0.0 表示 Mongrel 侦听与您的系统“关联”的每个 IP 地址,包括 localhostlocalhost 被定义为 127.0.0.1 的别名)。

【讨论】:

  • 如果我尝试在不同的 ip 上运行它(使用 rails server -b 127.0.0.10)我收到以下错误:/Library/Ruby/Gems/1.8/gems/mongrel-1.1.5 /lib/mongrel/tcphack.rb:12:in `initialize_without_backlog': 无法分配请求的地址 - bind(2) (Errno::EADDRNOTAVAIL)
  • 当然,因为您的系统无法“解析”(bind 方法仅适用于本地地址),例如127.0.0.10,Mongrel 无法将其套接字绑定到该地址。
  • 那我怎么绑定不了本地地址127.0.0.1呢?
  • 请出示您的/etc/hosts 文件。
  • 您的hosts文件中没有127.0.0.1,所以bind方法不能使用它。您至少可以取消注释 127.0.0.1 localhost 行以使其正常工作。
【解决方案2】:

这个问题的答案在于会话存储配置。

通过代码调试后,我可以看到会话并没有被各种身份验证方法随时可用。经过更深入的检查,我发现了一个配置文件,该文件设置了从中获取会话的域。将其设置为“mpt.local”允许会话被拾取,从而允许我登录。

【讨论】:

    猜你喜欢
    • 2011-08-02
    • 2010-09-11
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    相关资源
    最近更新 更多