【问题标题】:Node.js is not accessible from external IPs on Ubuntu无法从 Ubuntu 上的外部 IP 访问 Node.js
【发布时间】:2016-05-02 19:04:36
【问题描述】:

我尝试访问在 Ubuntu 上运行的 node.js 服务器。我的电脑连接了TP-link路由器。现在,我想从其他 IP(不是从我的本地主机或本地 IP)访问节点服务。我能做些什么?我使用了以下代码。

注意:此服务器工作正常,可从本地 IP 访问,但无法从我的公共 IP 访问

http.listen(6000,"0.0.0.0",function(){
    log.info("server started");
})

【问题讨论】:

  • PORT的值是多少?
  • Hrm,应该是打开的,但可能是 iptables 块。试试更高的范围,比如 8080 或 9000。
  • 这里可能会发生很多事情。我认为这与 NodeJS 无关,因为您的绑定地址是正确的
  • 我只是使用我的公共 ip 访问节点服务器服务,但我不能,我认为路由器不会将请求转发到与路由器连接的本地电脑。
  • 如果它在 localhost:6000 上工作,那么您最好在 superuser.com 上发帖以帮助转发路由器上的端口。

标签: node.js live


【解决方案1】:

你必须使用:-

iptables -A OUTPUT -p tcp  --sport 8080 -j ACCEPT

用于传出规则(不是dport)。除此之外,也许有更早的规则阻止流量?试试iptables -L。

【讨论】:

    【解决方案2】:

    Ubuntu有很好的防火墙,默认系统不允许外部IP响应

    在 express 和 node js 或任何类似的服务器中

    http.listen(6000,"0.0.0.0",function(){
        log.info("server started");
    })
    

    它将适用于您的 IP、本地主机和公共 IP 但在外部 IP 上无法访问它

    首先替换

    localhost -> 0.0.0.0
    

    当你想同时运行前端和后端时 那么最好直接使用公网IP而不是0.0.0.0

    如果您使用的是 ubuntu,那么我们需要使用 ufw 更改防火墙设置

    UFW 默认安装在 Ubuntu 上。如果由于某种原因被卸载了,你可以使用 apt-get 安装它:

    sudo apt-get install ufw
    

    然后

     sudo nano /etc/default/ufw
    

    检查这一行并确认为是

    IPV6=yes
    

    保存文件使用 Ctrl-X 退出文件,然后 shift + y 保存您所做的更改,然后 ENTER

    任何时候,你都可以用这个命令查看UFW的状态:

    sudo ufw status verbose
    

    默认情况下,UFW 处于禁用状态,因此您应该会看到如下内容:

    Output:
    Status: inactive
    

    不是最重要的一点

    sudo ufw allow portNumber // here portNumber is port-number in integer
    

    你的情况

    sudo ufw allow 6000
    

    并允许

    sudo ufw allow http
    

    更多关于ubuntu的规则和防火墙click here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2020-07-02
      • 2021-12-06
      • 2015-11-04
      • 2018-09-29
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多