【问题标题】:What else is required to access a node app from outside a Digital Ocean droplet?从 Digital Ocean 液滴外部访问节点应用程序还需要什么?
【发布时间】:2017-10-11 03:33:07
【问题描述】:

我们已经建立了一个节点服务器,它在 5000 端口上运行。

newly created droplet 中,我们有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

还有the port is enabled

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之外访问节点应用还需要什么?

【问题讨论】:

  • 在 5000 端口上运行时,iptables -Snetstat -plant 的输出是什么?
  • 还有netstat -ntlp的输出?
  • 为什么把nginx改成监听5000端口?这不是您的节点应用程序正在监听的地方吗?您应该让 nginx 在端口 80 上提供流量,并将该流量代理/转发到端口 5000(您的节点应用程序在该端口接收它)。
  • @Oliver 添加了输出以供参考

标签: node.js nginx ubuntu-16.04 digital-ocean


【解决方案1】:

对于 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

以上内容涵盖了我们将如何设置服务器块:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    相关资源
    最近更新 更多