我正在尝试在AWS的ec2实例上部署NodeJS / React应用。
我的应用程序在端口3000上运行良好,但是没有转发到端口80。
在这种情况下,修改proxy_pass或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 PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
我的目录结构如下:
- appname/
- /api (node.js server-side code)
- /client (React client-side code)
我尝试从npm start
以及appname/client/
内部运行npm build
。 sudo netstat -lntp | grep 80
显示没有进程正在侦听端口80,因此该端口可用。
该应用在[public IP]:3000
上呈现。当我尝试访问[public IP]
时,浏览器显示“无法访问此站点”。
这似乎是一件很简单的事情,但是nginx和iptables配置都被忽略了。我想念什么吗?
答案 0 :(得分:1)
还需要端口从Amazon EC2实例的控制台面板转发。为了从EC2实例控制台面板启用端口,请执行以下步骤:
Security groups
部分assigned security group
名称,它应该类似于launch-wizard-{number}
inbound
标签您可以检查以下URL以获取有关Amazon EC2端口转发的更多信息
https://aws.amazon.com/premiumsupport/knowledge-center/connect-http-https-ec2/