如何在AWS上的端口80上运行Rails?

时间:2016-01-11 11:54:57

标签: ruby-on-rails linux amazon-web-services port

我正在尝试在AWS Amazon Linux上重启Rails应用程序。 我通过AWS控制台重新启动了该实例,但我无法通过端口80访问该服务。

条件是:

  1. 应用程序在重启之前工作正常。

  2. 应用程序适用于端口3000。

  3. 应用程序可以在端口80上运行(如rails s -d -b 0.0.0.0 -p 80)。

  4. AWS的安全组称,入站时HTTP为80开放。

  5. 我有什么需要检查的吗?

2 个答案:

答案 0 :(得分:1)

您应确保操作系统本身已打开该端口(AWS可能会阻止外部防火墙级别的某些端口的流量;但不是您的情况)。一旦我有类似的问题,这些命令帮助了我:

iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
/etc/init.d/iptables save

在我的案例中有CentOS,如果重要的话。

答案 1 :(得分:1)

好的,我弄明白了:

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000

您可以通过此命令将端口80上收到的数据包转发到端口3000。您可以在端口3000上运行应用程序,然后在端口80上访问。

但这里仍有一个问题:

  

为什么rails s -d -b 0.0.0.0 -p 80(在端口80上运行应用程序)   没有工作

[增订] 这是因为iptables不接受端口80上的数据包。您可以通过@hedgesky的命令对其进行配置。谢谢你的帮助。