如何为 Rails 应用程序设置允许的 IP 客户端
How do you set the allowed IP clients for a Rails application
您在哪里配置允许连接到 Rails 应用程序的 IP 地址?
我有一个简单的 rails 应用程序,我在 Ubuntu 14.04.
的开发环境中继承了 运行s
它工作正常,直到最近从 git 合并了一些更改。现在,当我 运行 rails s
时,应用程序似乎开始像服务器一样瘦,正如预期的那样。
=> Booting Thin
=> Rails 4.2.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on localhost:3000, CTRL+C to stop
netstat 显示 rails 实际上正在按预期收听
tcp 0 0 localhost:3000 *:* LISTEN
我可以使用 127.0.0.1:3000
从服务器框上的浏览器正常访问该网站,并且一切似乎都正常工作。我无法从任何其他机器访问它,因为返回连接被拒绝状态,因为 rails 只允许端口 3000 上的本地主机。
如果我从命令行使用 thin start
启动 Thin,它 returns 具有类似的设置
>> Using rack adapter
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop
但这次 Thin 正在侦听来自任何 IP 的连接,我可以从另一台机器访问该站点。尽管两者都是 1.5.1 版,但单独启动 Thin 与从 rails 启动 Thin 在行为上存在差异。 Rails 配置中的某些内容限制 Thin 仅侦听来自本地主机的连接。
据我所知,我拥有所有最新的宝石。我认为这个问题可能与 eventmachine 有关,但我找不到任何东西。
感谢任何建议。
0.0.0.0:3000 是绑定到所有接口的别名。本地主机实际上只是本地主机 127.0.0.1,无法从外部访问。
With rails 4 我相信他们更改了 rails 的默认行为,因此服务器不再侦听外部接口。您可以使用
rails s -b 0.0.0.0
这会将它绑定到 0.0.0.0(所有接口),就好像您手动开始精简一样。
当您尝试从同一网络中的其他设备访问您的应用时,您需要允许端口 3000
的传入流量。在 ubuntu
上查看 Allowing Incoming Traffic on Specific Ports 的文档
当您启动服务器时,通过将 rails 应用程序绑定到特定 IP,指定您的 rails 应用程序将 运行 使用的 IP。这可以通过 -b 选项来完成。例如如果你的 ip 是 192.168.1.69
rails server -b 192.168.1.69 -p 3000
感谢勘误表
说的很清楚了,现在有了关键字"binding",可以看出这个问题之前有人问过。在配置文件中设置绑定会很有帮助,但似乎这是不可能的。我将尝试为 rails s 命令设置别名并使用它。
仅供参考,根据该版本的发行说明,rails 的 4.2 版中进行了更改,因为底层机架库发生了更改。
您在哪里配置允许连接到 Rails 应用程序的 IP 地址?
我有一个简单的 rails 应用程序,我在 Ubuntu 14.04.
的开发环境中继承了 运行s它工作正常,直到最近从 git 合并了一些更改。现在,当我 运行 rails s
时,应用程序似乎开始像服务器一样瘦,正如预期的那样。
=> Booting Thin
=> Rails 4.2.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on localhost:3000, CTRL+C to stop
netstat 显示 rails 实际上正在按预期收听
tcp 0 0 localhost:3000 *:* LISTEN
我可以使用 127.0.0.1:3000
从服务器框上的浏览器正常访问该网站,并且一切似乎都正常工作。我无法从任何其他机器访问它,因为返回连接被拒绝状态,因为 rails 只允许端口 3000 上的本地主机。
如果我从命令行使用 thin start
启动 Thin,它 returns 具有类似的设置
>> Using rack adapter
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop
但这次 Thin 正在侦听来自任何 IP 的连接,我可以从另一台机器访问该站点。尽管两者都是 1.5.1 版,但单独启动 Thin 与从 rails 启动 Thin 在行为上存在差异。 Rails 配置中的某些内容限制 Thin 仅侦听来自本地主机的连接。
据我所知,我拥有所有最新的宝石。我认为这个问题可能与 eventmachine 有关,但我找不到任何东西。
感谢任何建议。
0.0.0.0:3000 是绑定到所有接口的别名。本地主机实际上只是本地主机 127.0.0.1,无法从外部访问。
With rails 4 我相信他们更改了 rails 的默认行为,因此服务器不再侦听外部接口。您可以使用
rails s -b 0.0.0.0
这会将它绑定到 0.0.0.0(所有接口),就好像您手动开始精简一样。
当您尝试从同一网络中的其他设备访问您的应用时,您需要允许端口 3000
的传入流量。在 ubuntu
当您启动服务器时,通过将 rails 应用程序绑定到特定 IP,指定您的 rails 应用程序将 运行 使用的 IP。这可以通过 -b 选项来完成。例如如果你的 ip 是 192.168.1.69
rails server -b 192.168.1.69 -p 3000
感谢勘误表
说的很清楚了,现在有了关键字"binding",可以看出这个问题之前有人问过。在配置文件中设置绑定会很有帮助,但似乎这是不可能的。我将尝试为 rails s 命令设置别名并使用它。
仅供参考,根据该版本的发行说明,rails 的 4.2 版中进行了更改,因为底层机架库发生了更改。