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

我确定这是一个非常基本的问题,但我找不到答案。 我已经看过这个问题 , 这个问题 , 这个问题 , 这个问题 ,而这个问题并没有一个帮我找到答案。

我正在使用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。 这更像是一个实验,看看这是否可能。 提前致谢!

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

有多种解决方案:

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