Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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
在AWS服务器上部署Node.js/React应用程序,端口未正确转发_Node.js_Reactjs_Amazon Web Services_Nginx_Amazon Ec2 - Fatal编程技术网

在AWS服务器上部署Node.js/React应用程序,端口未正确转发

在AWS服务器上部署Node.js/React应用程序,端口未正确转发,node.js,reactjs,amazon-web-services,nginx,amazon-ec2,Node.js,Reactjs,Amazon Web Services,Nginx,Amazon Ec2,我正在尝试在AWS上的ec2实例上部署NodeJS/React应用程序 我的应用程序在端口3000上运行正常,但未转发到端口80 在这种情况下,修改代理传递或修改iptables似乎都不起作用 我尝试了以下方法: 修改Nginx的服务器配置,将端口3000转发到端口80。我的Nginx配置: server { listen 80; location / { proxy_pass http://[My Private ec2 IP]:3000; pr

我正在尝试在AWS上的ec2实例上部署NodeJS/React应用程序

我的应用程序在端口3000上运行正常,但未转发到端口80

在这种情况下,修改代理传递或修改iptables似乎都不起作用

我尝试了以下方法:

  • 修改Nginx的服务器配置,将端口3000转发到端口80。我的Nginx配置:

    server {
        listen 80;
        location / {
            proxy_pass http://[My Private ec2 IP]:3000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            server_name example.com www.example.com;
        }
    }
    
  • 修改iptables以将端口3000转发到端口80

  • sudo iptables-A预路由-t nat-i eth0-p tcp--dport 80-j重定向--到端口3000

    我的目录结构如下:

    -appname/
    -/api(node.js服务器端代码)
    -/client(反应客户端代码)

    我试过从
    appname/client/
    中运行
    npm start
    ,以及
    npm build
    sudonetstat-lntp | grep80
    显示没有进程侦听端口80,因此该端口可用

    应用程序在
    [公共IP]:3000上呈现。当我尝试访问
    [public IP]
    时,浏览器显示“无法访问此站点”


    这似乎是一件相当简单的事情,但nginx和iptables配置都被忽略了。我遗漏了什么吗?

    从Amazon EC2实例的控制台面板转发还需要端口。要从EC2实例控制台面板启用端口,请执行以下步骤:

  • 登录AmazonEC2仪表板
  • 选择您的EC2实例计算机
  • 选择EC2机器后,在底部面板中找到
    安全组
    部分
  • 单击
    assigned security group
    name,它应该类似于
    launch wizard-{number}
  • 然后,从底部面板打开
    inbound
    选项卡
  • 单击编辑按钮并添加需要在实例计算机中打开的端口(803000)
  • 您可以查看下面的URL以获取有关Amazon EC2端口转发的更多信息


    需要澄清的是:安全组不会转发任何流量。安全组是网络过滤器。默认情况下,所有入口流量都被阻止。以上说明授权端口80上的流量。是的,安全组没有转发流量,它们用作网络筛选器。