在AWS服务器上部署Node.js/React应用程序,端口未正确转发
我正在尝试在AWS上的ec2实例上部署NodeJS/React应用程序 我的应用程序在端口3000上运行正常,但未转发到端口80 在这种情况下,修改代理传递或修改iptables似乎都不起作用 我尝试了以下方法:在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
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;
}
}
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上的流量。是的,安全组没有转发流量,它们用作网络筛选器。