第一个想法是在我的 VPS 上设置一个 Node.js 服务器,因此我遵循了这篇文章:在生产环境中设置 node js
但是在本文中建议使用此命令:
sudo setcap cap_net_bind_service=+ep /usr/local/bin/node
以确保我的节点应用程序可访问,而无需在 url 后提供 3000 端口。
然后我继续写这篇文章在 ubuntu 上安装 nginx允许多个主机访问我服务器上的不同应用程序。当我安装 nginx 并尝试运行该地址时,它应该显示“欢迎使用 nginx”页面。但是它仍然指向我使用 pm2 包运行的节点应用程序。我怀疑这是由于我在第一篇文章中执行的 setcap 造成的。有人能告诉我如何反转这个 setcap 命令,以便我可以继续设置 nginx 吗?
答案1
听起来你仍然在端口 80 上运行 NodeJS。你一次只能在一个端口上运行一个东西。你需要:
- 将此节点应用程序移回高端口。这意味着将您的端口更改
.listen(80, ...)
为.listen(8000, ...)
或其他端口。 让 Nginx 反向代理回到该端口:
server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; } }
你做的事情setcap
并不需要需要逆转。这不是阻止 nginx 在端口 80 上加载的原因。