如何 运行 Rails 在 AWS 的 80 端口上?
How to run Rails on port 80 on AWS?
我正在尝试重启 AWS Amazon Linux 上的 Rails 应用程序。
我通过 AWS 控制台重启实例,但无法通过端口 80 访问该服务。
条件是:
应用程序在重新启动前工作正常。
应用程序在端口 3000 上工作。
应用程序可以 运行 在端口 80 上(如 rails s -d -b 0.0.0.0 -p 80)。
AWS 的安全组表示它对入站 HTTP 开放 80。
有什么我必须检查的吗?
您应该确保 OS 本身已打开该端口(AWS 可能会在外部防火墙级别阻止某些端口的流量;这不是您的情况)。一旦我遇到类似的问题,这些命令帮助了我:
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
/etc/init.d/iptables save
在我的例子中有美分OS,如果重要的话。
好的,我知道怎么做了:
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
您可以通过此命令将端口80 上收到的数据包转发到端口3000。您可以运行 端口3000 上的应用程序然后在端口80 上访问。
但是这里还有一个问题:
Why rails s -d -b 0.0.0.0 -p 80 (running application on port 80)
didn't work
[更新]
这是因为 iptables 不接受 80 端口的数据包。您可以通过@hedgesky 的命令进行配置。感谢您的帮助。
我正在尝试重启 AWS Amazon Linux 上的 Rails 应用程序。 我通过 AWS 控制台重启实例,但无法通过端口 80 访问该服务。
条件是:
应用程序在重新启动前工作正常。
应用程序在端口 3000 上工作。
应用程序可以 运行 在端口 80 上(如 rails s -d -b 0.0.0.0 -p 80)。
AWS 的安全组表示它对入站 HTTP 开放 80。
有什么我必须检查的吗?
您应该确保 OS 本身已打开该端口(AWS 可能会在外部防火墙级别阻止某些端口的流量;这不是您的情况)。一旦我遇到类似的问题,这些命令帮助了我:
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
/etc/init.d/iptables save
在我的例子中有美分OS,如果重要的话。
好的,我知道怎么做了:
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
您可以通过此命令将端口80 上收到的数据包转发到端口3000。您可以运行 端口3000 上的应用程序然后在端口80 上访问。
但是这里还有一个问题:
Why rails s -d -b 0.0.0.0 -p 80 (running application on port 80) didn't work
[更新] 这是因为 iptables 不接受 80 端口的数据包。您可以通过@hedgesky 的命令进行配置。感谢您的帮助。