【问题标题】:Node JS "Hello world" server on AWSAWS 上的节点 JS“Hello world”服务器
【发布时间】:2014-05-03 12:40:25
【问题描述】:

我尝试在 AWS t1.micro 实例上运行“Hello world”服务器。我做了什么:

  • 我在 aws 上安装了 Node
  • 这样写:


require("http").createServer(function(request, response){
      response.writeHeader(200, {"Content-Type": "text/plain"});  
        response.write("Hello World!");  
          response.end();
}).listen(8080);


- 在 aws 上运行它:node test_server.js

现在我尝试像这样从本地机器向服务器发送请求:

curl http://NAME:8080 其中 NAME 是来自 aws 控制台的公共 DNS 名称,但没有任何反应。 我忘记了什么?或者我做错了什么

我试图寻找某种教程,但他们描述了如何在本地机器上运行它或建议设置 Ngnx。但我寻找极简主义的例子

【问题讨论】:

    标签: javascript node.js amazon-web-services


    【解决方案1】:

    您需要告诉 Amazon 授权 8080 端口上的入站流量到您的实例。请参阅step by step instructions 的文档。

    简而言之:

    • 转到 Amazon EC2 控制台,单击 Instance 并打开 Security Group 首选项窗格
    • 添加一条新规则,授权来自端口 8080 上任何 IP (0.0.0.0/0) 的入站流量
    • 应用更改:Node Web 服务器现在应该能够处理 HTTP 请求。

    【讨论】:

    • 或者你可以在你的代码中将listen(8080)改为listen(80),然后设置安全组允许知名HTTP服务通过。
    • @CharlesEngelke - 你必须使用sudo node test_server.js 让它在端口 80 上工作,否则节点会抛出错误。可以通过修改权限来改变这一点(将节点添加到 sudoers 等)。
    【解决方案2】:

    @Paul 是对的,但这只是我解决方案的一部分。我仍然从本地机器收到“连接被拒绝”(远程 CURL 很好)。所以,谜题的另一部分是通过关闭 Unix 防火墙(以及 AWS 安全组配置)解决的,即 iptables!

    你在运行 CentOS 吗?试试这个:

    $ service iptables save
    $ service iptables stop
    $ chkconfig iptables off
    

    当然,关闭防火墙并开放 AWS 控制台安全组并不是一个长期的好主意。正确的做法是使用 iptable,打开 80 端口进行入站和出站,然后将 80 重新路由到 Node.js 端口(3000 或 1337 或其他):

    $ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
    $ sudo iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
    $ sudo iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
    

    你也可以使用 Nginx 来做重定向。 Varnish Cache 也是一个很好的工具,因为如果您有很多用户访问一个资源/页面,它会显着减少 Node.js 进程的负载。

    进一步阅读 AWS 和 Node.js:

    http://www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

    如何在 Linux 上禁用 iptables:

    http://www.cyberciti.biz/faq/turn-on-turn-off-firewall-in-linux/

    在 CentOS 和 Fedora 上相同:

    http://www.cyberciti.biz/faq/disable-linux-firewall-under-centos-rhel-fedora/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 2018-01-10
      相关资源
      最近更新 更多