想要改进这个问题吗? 更新问题,以便 editing this post 提供事实和引用来回答它.
关闭 6 年前。
我正在 cloud Linux Node
上设置我的第一个 Node.js
服务器,我对 Linux admin
的细节还很陌生. (顺便说一句,我没有尝试同时使用 Apache。)
一切都安装正确,但我发现除非我使用 root 登录
,否则我无法使用 node 监听 port 80
。但是,出于安全原因,我宁愿不以 root 身份运行它。
最佳做法是:
我应该将端口 80 的流量转发到不同的监听端口吗?
谢谢
最佳答案
我在我的云实例上所做的是使用以下命令将端口 80 重定向到端口 3000:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
然后我在端口 3000 上启动我的 Node.js。对端口 80 的请求将被映射到端口 3000。
您还应该编辑您的 /etc/rc.local
文件并添加该行减去 sudo
。这将在机器启动时添加重定向。 /etc/rc.local
中不需要 sudo
,因为系统启动时,那里的命令以 root
身份运行。
使用 forever用于启动 Node.js 的模块。它将确保在崩溃时重新启动,并将控制台日志重定向到文件。
将您的 Node.js 启动脚本添加到您为端口重定向编辑的文件 /etc/rc.local
。这将在系统启动时运行您的 Node.js 启动脚本。
这不仅适用于 Linode,也适用于 Digital Ocean、AWS EC2 和其他 VPS 提供商。然而,在基于 RedHat 的系统上,/etc/rc.local
是 /ect/rc.d/local
。
https://stackoverflow.com/questions/16573668/