从本地networking上的另一台计算机访问webrick / rails

我有本地主机上运行的rails应用程序:3000。 我希望从同一networking上的另一台计算机访问它。 我觉得我已经轻松地做到了这一点,但它给了我一些悲伤。 我可以ping电脑的IP很好,但在浏览器中打ip:3000不工作。 我也尝试启动rails s -b ipaddress ,也没有运气。

build议?

尝试在端口80上运行服务器,而防火墙可能阻塞了端口3000。

确保服务器端防火墙对高端口的传入连接开放(这通常是正确的,默认端口是3000,所以你可能不需要做任何事情),你也必须像这样启动服务器:

 rails server -b 0.0.0.0 

将其绑定到通用地址。 它默认绑定到localhost

使用这种方法,你不必绑定到端口80,但你可以这样做:

 rails server -b 0.0.0.0 -p 80 

(如果你使用rvm,那么你可能需要使用rvmsudo


为了使这个改变更加永久性,请编辑你的config/boot.rb并join:

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

那么你应该只需要使用rails s

资料来源: https : //stackoverflow.com/a/29562898/1795429

 rails server -b 0.0.0.0 -p 8000 

这对我有效。 没有防火墙问题,也不需要给予超级用户权限。

假设Webrick开始没有问题,这是100%的防火墙问题。 您应该提供一些规范,例如您的主机正在运行的操作系统以及您是否拥有pipe理员权限,只要控制防火墙即可。

如果您在Linux上并运行iptables防火墙服务,则需要添加一个规则来接受通过端口3000的stream量。它看起来像这样:

 iptables -A INPUT -p tcp --dport 3000 -j ACCEPT 

该命令将是一次性解决scheme,但是您需要扩展当前的iptables规则脚本,使其在每次系统引导或login时都是永久性的。

如果你正在运行Windows,取决于你是否运行XP或Vista / 7,你需要做类似的事情。 我假设你在Vista / 7环境下,你只需要按照这个指南http://windows.microsoft.com/en-US/windows7/Open-a-port在Windows防火墙; 。

  1. 是的,这是一个很好的答案:

     rails server -b 0.0.0.0 
  2. 如果您使用Ubuntu ,则可能必须打开防火墙中的端口:

     sudo ufw allow 3000 
  3. 如果您的系统在VirtualBox中运行,则必须检查您的networking设置

    在networking模式NAT的情况下,您必须单击扩展选项,然后在端口转发 。 添加TCP协议1,主机端口3000(或任何其他)和访客端口3000的规则。

原因之一是你的ip没有绑定到rails服务器。 您可以使用-b命令选项绑定ip。

 Usage: rails server [mongrel, thin etc] [options] -p, --port=port Runs Rails on the specified port. Default: 3000 -b, --binding=IP Binds Rails to the specified IP. Default: localhost