我正在尝试在AWS Amazon Linux上重启Rails应用程序。 我通过AWS控制台重新启动了该实例,但我无法通过端口80访问该服务。
条件是:
应用程序在重启之前工作正常。
应用程序适用于端口3000。
应用程序可以在端口80上运行(如rails s -d -b 0.0.0.0 -p 80)。
AWS的安全组称,入站时HTTP为80开放。
我有什么需要检查的吗?
答案 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的命令对其进行配置。谢谢你的帮助。