从 Digital Ocean Droplet 外部访问节点应用程序还需要什么?

What else is required to access a node app from outside a Digital Ocean droplet?

我们已经设置了一个在端口 5000 上运行的节点服务器。

newly created droplet, we have installed and started nginx。为了访问节点应用程序,我们在 /etc/nginx/sites-enabled/default

中将默认端口从 80 更改为 5000
server {
        listen 5000 default_server;
        listen [::]:5000 default_server;

ufw is enabled

sudo ufw enable

还有

sudo ufw allow 5000/tcp

还有,这个方法也试过了:

sudo ufw allow 5000

已通过 sudo ufw status

确认

netstat -ntlp

还有the app is configured to listen on the public interface

const server = app.listen(process.env.PORT || 5000, '0.0.0.0', () => {
    console.log('Express server listening on port %d in %s mode', server.address().port, app.settings.env);
});

但是,即使是默认端口也没有响应。因此,我们将 80 恢复为默认端口。

访问 Droplet 之外的节点应用程序还需要什么?

当涉及到 NodeJS 和 NGINX 时,我们希望将 NGINX 配置为侦听端口 80,尽管我们希望使用 proxy_pass 来传递来自 Web 服务器的请求(NGINX) 到应用程序 运行 所在端口上的 NodeJS 应用程序。这将使我们能够将端口保持在 URL.

之外

使用当前配置,NGINX 将监听端口 5000,这将阻止应用程序能够监听同一端口(反之亦然)。

有一个很好的指南涵盖了设置 NodeJS + NGINX —— 这个特定部分是最重要的:

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04#set-up-nginx-as-a-reverse-proxy-server

以上介绍了我们将如何设置服务器块:-)