是否打开一个端口供本地主机之外的应用程序访问?

是否打开一个端口供本地主机之外的应用程序访问?

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

在我的 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  

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

curl exampleAddress.com:3000结果是,Hello World但它无法在互联网上工作。使用此端口检查工具端口似乎仍处于关闭状态。请记住,我只是试图访问已启动并运行的网站的额外端口,该网站在端口 443 上运行(它在 SSL 上运行,这可能很重要)。

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

是否存在我遗漏的 Apache 配置,因为端口 443、80 和 22 是开放的,但我没有看到具体的区别。

答案1

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

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

然后你可以用curl -4 exampleAddress.com:3000

相关内容