我已成功在Ec2
上安装了节点js,我的网站和域运行正常,但是当我尝试运行节点js时,它将无法运行。
我已经按照一些教程进行了操作,并且已经完成了以下步骤。
1. I have added a port 9000 on my security group
2. I have done the pre-routing on iptables using below command
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9000
但是在运行上面的代码之后,我的域名停止运行意味着当我尝试打开我的网站时mydomain.com它什么也没有显示,如果我删除该规则而不是它的工作。
我也尝试过以下解决方案,以root身份运行节点来监听80上的端口。
sudo node server.js
但之后我收到了错误
Error: listen EADDRINUSE :::80
at Object.exports._errnoException (util.js:949:11)
at exports._exceptionWithHostPort (util.js:972:20)
at Server._listen2 (net.js:1253:14)
at listen (net.js:1289:10)
at Server.listen (net.js:1385:5)
at Object.<anonymous> (/home/mcook/domains/development.mcook.co.in/public_html/server.js:36:5)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:456:32)
at tryModuleLoad (module.js:415:12)
我只想让我的节点和我的网站都必须运行,并且我需要运行哪个命令和端口。
答案 0 :(得分:1)
按照命令将 PORT 80 的所有流量转发至 PORT 9000 。
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9000
你为什么这样做?由于您已经从AWS安全组中打开了 PORT 9000 ,因此您可以将 node.js 直接连接到 PORT 9000 来自代码。
您在执行上述代码后看到空白页的原因是您的Web服务器在PORT 80上运行,并且每个请求都转发到端口9000上的node.js服务器,而这些请求实际上没有任何要显示的内容。
因此,不要在命令上运行,只需在PORT 9000上运行node.js服务器,并仅从客户端连接到PORT 9000。