启动rails app,从外部本地网络向app发出请求

时间:2016-09-13 04:39:51

标签: ruby-on-rails ruby networking

我确定这是一个非常基本的问题,但我找不到答案。我已经查看了this questionthis questionthis questionthis questionthis question,但这些都没有帮助我找到答案。

我正在使用Rails 4.2。我创建了一个非常简单的应用程序来测试我是否可以执行以下操作:

我想知道是否可以在我的计算机上启动我的rails应用程序,然后从本地网络的外部访问该应用程序。例如:从我的手机(未连接到本地网络)我想发出请求并成功获得回复。

我认为我首先需要获取外部/可路由的IP地址。我意识到我的ISP为我的路由器提供的IP地址不是静态的,但仅仅是为了演示目的,我想知道我是否可以成功地发出一个请求。

我去谷歌并输入"什么是我的IP"它用我的外部IP地址返回(让我假装我的外部IP地址是:11.111.111.111)。

在我的rails应用程序中:然后我执行了以下命令:

rvmsudo rails s -p 80 -b 11.111.111.111 

我想绑定到外部ip地址,我想在端口80上侦听。我执行rvmsudo因为据我所知,1000以下的所有端口都需要更高的权限。

出错并说出以下内容:

  

无法分配请求的地址 - bind(2)

我试图理解为什么这是错误的。我不明白的是什么?我错过了一步吗?是不是可以这样做?我的ISP是否制作它以便我无法绑定到外部IP?我是否需要在路由器上进行其他配置?

我意识到我可以使用heroku。这更像是一个实验,看看这是否可能。提前谢谢!

1 个答案:

答案 0 :(得分:0)

您无法将套接字绑定到外部IP。您的ISP将此IP分配给您的调制解调器(或用于连接到Internet的任何设备)。您只能绑定到计算机的接口。

有多种解决方案:

  • 绑定到0.0.0.0:3000(或您的计算机IP,而不是localhost),并确保您的网络将您的公共IP转发到该端口上的计算机。
  • 使用类似https://ngrok.com/简单易用的内容