【发布时间】:2019-11-23 05:02:09
【问题描述】:
我正在尝试在 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)
我尝试在appname/client/ 和npm build 中运行npm start。 sudo netstat -lntp | grep 80 显示没有进程在监听 80 端口,因此该端口可用。
应用在[public IP]:3000 上呈现。当我尝试访问[public IP] 时,浏览器显示“无法访问此站点”。
这似乎是一件相当简单的事情,但 nginx 和 iptables 配置都被忽略了。我错过了什么吗?
【问题讨论】:
标签: node.js reactjs amazon-web-services nginx amazon-ec2