打开可在本地主机之外访问的应用程序的端口?

Sha*_*man 5 server networking apache2 16.04

虽然我已经研究了一整天,但我仍然找不到解决这个问题的方法。

在我的 Ubuntu 服务器上,我试图运行一个 node.js 应用程序,它只是打印出“Hello World”并在端口 3000 上运行。我希望不仅能够在我的本地主机上而且能够在我的实时网站地址上访问这个端口。

运行sudo netstat -ntlp,我得到以下信息:

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      58639/mysqld    
tcp        0      0 0.0.0.0:9418            0.0.0.0:*               LISTEN      585/git-daemon  
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      839/dovecot     
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      839/dovecot     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      792/sshd        
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      17862/master    
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      889/ajenti-panel -d
tcp        0      0 0.0.0.0:5314            0.0.0.0:*               LISTEN      947/BackupFP    
tcp        0      0 0.0.0.0:5666            0.0.0.0:*               LISTEN      838/nrpe        
tcp6       0      0 :::3300                 :::*                    LISTEN      26390/apache2   
tcp6       0      0 :::9418                 :::*                    LISTEN      585/git-daemon  
tcp6       0      0 :::110                  :::*                    LISTEN      839/dovecot     
tcp6       0      0 :::143                  :::*                    LISTEN      839/dovecot     
tcp6       0      0 :::80                   :::*                    LISTEN      26390/apache2   
tcp6       0      0 :::22                   :::*                    LISTEN      792/sshd        
tcp6       0      0 :::3000                 :::*                    LISTEN      52768/index.js  
tcp6       0      0 :::25                   :::*                    LISTEN      17862/master    
tcp6       0      0 :::443                  :::*                    LISTEN      26390/apache2   
tcp6       0      0 :::5666                 :::*                    LISTEN      838/nrpe  
Run Code Online (Sandbox Code Playgroud)

我们注意到端口似乎打开了,甚至正在运行

curl exampleAddress.com:3000结果,Hello World但它不会在互联网上工作。使用此端口检查器工具,端口似乎保持关闭状态。请记住,我只是想访问在端口 443 上运行的已经启动并正在运行的网站上的额外端口(它在 SSL 上运行,这可能很重要)。

我通过运行确保防火墙不是问题:sudo ufw allow 3000甚至尝试完全禁用防火墙。

由于端口 443、80 和 22 已打开,我是否缺少任何 apache 配置,但我看不到具体差异。

sмu*_*urf 2

我可以看到进程 index.js 正在侦听端口 3000、协议 IPv6 (tcp6),但未侦听协议 IPv4 (tcp)。

您需要检查您的 NodeJS 设置并让它也侦听 IPv4。

然后你可以测试它curl -4 exampleAddress.com:3000