如何在同一个 VPS 和域上部署前端和 node.js 服务器?

How to deploy frontend and node.js server on same VPS and domain?

我的任务是创建登陆页面,发送包含提交表单付款要求的电子邮件。 所以我有简单的静态前端(index.html、css/、js/、img/)和发送电子邮件的快速服务器(server.js); 在我的本地主机上,我 运行 localhost:3000 上的前端和 localhsot:3000 上的 server.js 前端。添加 CORS headers 后一切正常,电子邮件已成功发送。

为了生产,我买了一个 VPS 和 ubuntu 来部署所有这些。 我已经设置了 nginx,所以我的前端可以在 myDomainName.com 上使用。但是当我 运行 server.js 它没有像在开发服务器上那样接收请求。同时,如果我通过 ssh 连接并输入 curl myDomainName.com:3000/,我会收到响应 'Hi';

// server.js
// some code...
app.get('/' function (req, res) { res.status(200).end('Hi'); }
app.listen(3000, function () { console.log('Server listening on port 3000!'); })


// frontendFormHandler.js
// some code...
$.get('myDomainName.com:3000/', function(data){ console.log(data) })

我应该如何设置所有这些才能使其在相同的 VPS、相同的域但在不同的端口上工作? 部署这类小项目的正确方法是什么?我应该选择其他乐器吗?

在大多数 UNIX 系统中,防火墙配置为仅允许来自端口 80443 上的其他客户端的流量用于 HTTP 和 HTTPS,出于安全原因,所有其他端口都被阻止。

允许端口(使用 ufw)使用

$ (sudo) ufw allow 3000/tcp
$ (sudo) ufw allow 3000/udp

或者,对于 IPTables:

$ (sudo) iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
$ (sudo) iptables -I INPUT -p udp --dport 3000 -j ACCEPT

允许 TCP 或 UDP 连接