Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点JS";“你好,世界”;AWS上的服务器_Javascript_Node.js_Amazon Web Services - Fatal编程技术网

Javascript 节点JS";“你好,世界”;AWS上的服务器

Javascript 节点JS";“你好,世界”;AWS上的服务器,javascript,node.js,amazon-web-services,Javascript,Node.js,Amazon Web Services,我尝试在AWS t1.micro实例上运行“Hello world”服务器。我所做的: 我在aws上安装了Node 写了这样的东西: -在aws上运行它:node test\u server.js 现在,我尝试将请求从本地计算机发送到服务器,如下所示: curlhttp://NAME:8080其中NAME是来自aws控制台的公共DNS名称,但什么也没有发生。 我忘了什么?或者我做错了什么 我试图寻找某种教程,但他们描述了如何在本地机器上运行该程序,或者建议设置Ngnx。但是我想找一个最简

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

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


-在aws上运行它:
node test\u server.js

现在,我尝试将请求从本地计算机发送到服务器,如下所示:

curlhttp://NAME:8080
其中NAME是来自aws控制台的公共DNS名称,但什么也没有发生。 我忘了什么?或者我做错了什么


我试图寻找某种教程,但他们描述了如何在本地机器上运行该程序,或者建议设置Ngnx。但是我想找一个最简单的例子,你需要告诉Amazon授权8080端口上的入站流量到你的实例。有关详细信息,请参阅文档

简言之:

  • 转到AmazonEC2控制台,单击Instance并打开安全组首选项窗格
  • 添加新规则,授权端口8080上任何IP(
    0.0.0.0/0
    )的入站流量
  • 应用更改:节点web服务器现在应该能够为HTTP请求提供服务

您需要告诉Amazon授权8080端口上的入站流量到您的实例。有关详细信息,请参阅文档

简言之:

  • 转到AmazonEC2控制台,单击Instance并打开安全组首选项窗格
  • 添加新规则,授权端口8080上任何IP(
    0.0.0.0/0
    )的入站流量
  • 应用更改:节点web服务器现在应该能够为HTTP请求提供服务

    • @保罗是对的,但这只是我解决问题的一部分。我仍然收到来自本地机器的“连接被拒绝”(远程CURL很好)。因此,谜题的另一部分是通过关闭Unix防火墙(除了AWS安全组配置)解决的,即iptables

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

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

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

      进一步阅读AWS和Node.js:

      如何在Linux上禁用iptables:

      CentOS和Fedora上的相同:


      @保罗是对的,但这只是我解决问题的一部分。我仍然收到来自本地机器的“连接被拒绝”(远程CURL很好)。因此,谜题的另一部分是通过关闭Unix防火墙(除了AWS安全组配置)解决的,即iptables

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

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

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

      进一步阅读AWS和Node.js:

      如何在Linux上禁用iptables:

      CentOS和Fedora上的相同:


      或者您可以将代码中的listen(8080)更改为listen(80),然后将安全组设置为允许知名HTTP服务通过它。@CharlesEngelke-您必须使用
      sudo node test_server.js
      使其在端口80上工作,否则节点将抛出错误。可以通过修改权限(将节点添加到sudoers等)来更改此设置。或者您可以将代码中的listen(8080)更改为listen(80),然后将安全组设置为允许知名HTTP服务通过它。@CharlesEngelke-您必须使用
      sudo node test_server.js
      使其在端口80上工作,否则,节点将抛出一个错误。可以通过修改权限(将节点添加到sudoers等)来改变这一点。
      $ 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