rails服务器没有响应远程连接

时间:2015-01-28 16:33:45

标签: ruby-on-rails

我在远程盒子上有一个rails服务器(debian wheezy,ruby 2.2,rails 4.2),当我尝试在我的本地浏览器或curl中连接它时,服务器没有响应。请求超时。但是,当我进入框中并wget localhost:3000时,它会完美地获取根页面。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

Rails 4.2更改了rails server绑定的默认IP地址,而不是绑定到0.0.0.0(即所有接口),它仅绑定到localhost

修改

抱歉,我现在看到你没有提到生产,只是一个遥控盒子。所以我从上面删除了那个位。

要解决这个问题,你可以做两件事,要么总是以-b选项开头:

rails s -b 0.0.0.0

或者,有一个小技巧可以将其添加到默认设置,请参阅https://stackoverflow.com/a/8998401/152786(请注意,您只需要合并:Port:Host选项,如果您愿意,可以将:Host设置为0.0.0.0

答案 1 :(得分:0)

要在不使用命令参数的情况下绑定服务器,可以在行bin/rails之后将其附加到require_relative '../config/boot',并且仅为rails服务器命令执行代码:

if ARGV.first == 's' || ARGV.first == 'server'
  require 'rails/commands/server'
  module Rails
    class Server
      def default_options
        super.merge(Host:  '0.0.0.0', Port: 3000)
      end
    end
  end
end

bin/rails文件像这样:

#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application',  __FILE__)
require_relative '../config/boot'

# Set default host and port to rails server
if ARGV.first == 's' || ARGV.first == 'server'
  require 'rails/commands/server'
  module Rails
    class Server
      def default_options
        super.merge(Host:  '0.0.0.0', Port: 3000)
      end
    end
  end
end

require 'rails/commands'