AWS ec2 Node.js应用程序 - 禁止端口80(403响应)

时间:2016-05-23 18:53:25

标签: node.js amazon-web-services tcp amazon-ec2

当我运行开源应用程序" atwork" (https://github.com/ritenv/atwork)在端口80上的ec2机器实例上,我收到带有禁止代码的服务器响应(403):

us-east-1c

但是,当我在另一个端口(8080)上运行它时,我收到了以下200条消息 服务器:

AtWork running at 0.0.0.0:80
GET / 304 3.802 ms - -
GET /users/notifications 403 3.972 ms - 9
GET /posts?limitComments=true 403 0.956 ms - 9
GET /chats 403 1.289 ms - 9
GET /streams?subscribed=true 403 0.708 ms - 9
GET /streams?unsubscribed=true 403 0.859 ms - 9
GET /users/me 403 0.847 ms - 9
GET /system-settings 304 4.803 ms - -
GET /favicon.ico 304 0.453 ms - -
GET /system-settings 304 2.766 ms - -
GET /favicon.ico 304 0.322 ms - -

我尝试了以下内容(但是,没有一个有效):

  1. 修改AWS控制台上安全组中的防火墙选项,允许所有端口上的所有tcp流量。
  2. 像这样运行iptable:

    iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

  3. 请帮助我理解我做错了什么,以及如何让端口80像其他端口一样运行。

    谢谢。

1 个答案:

答案 0 :(得分:0)

有两种方法可以解决此问题。 首先,是为运行应用程序的ec2机器用户提供root权限。但它可能存在安全风险 - 以root身份运行应用程序。

秒数是,我喜欢的那个:  以有限的用户身份运行nodejs应用程序,但是在反向代理之后。

应用程序可以侦听端口> 1000 - 像8080一样。 你可以运行NGINX作为反向代理。它将侦听80或443端口,并将请求传输到您的nodejs应用程序。 您可以使用这样的nginx配置 - https://github.com/vodolaz095/hunt/blob/master/examples/serverConfigsExamples/nginx.conf