Nodejs 请问下本地起个 node 服务如何能让远程通过 ip 访问?

发布于 1周前 作者 yuanlaile 最后一次编辑是 5天前 来自 nodejs/Nestjs

Nodejs 请问下本地起个 node 服务如何能让远程通过 ip 访问?

我用 node / express 起了个服务,通过 127.0.0.1 / localhost 是可以访问的。

但是我想用 「本机 ip:端口号」访问,却不能访问。

搜索了一下,改成 0.0.0.0 ,确认防火墙是关闭的,也还是不能访问,会和 macOS 有关吗?

Nodejs+Mongodb+Express车展项目入门到实战项目免费课学习中 https://www.itying.com/goods-240.html


24 回复

和大陆的互联网有关,默认不开公网 ip ,80 端口铁定更是没有。
不要问为什么,问就是为了人民的安全着想


你这个远程是多远,同一个局域网里的其他机器?公网上的其他机器?

是内网访问还是公网访问?
本机有几张网卡几个 IP ?
你用的是什么端口?
建议提供更多信息。

直接搜内网穿透吧,顺便看一下 TCP/IP 的东西,了解下 NAT

ipv6 试试,防火墙不止本地有,你的路由器,光猫啥的也会有

mac 有个🔨防火墙,默认自带只防出站,本机能访问其他局域网不能访问的话可能是路由器开了 ip 隔离

试试 ngrok https://ngrok.com/ 内网穿透

内网穿透了解一下

是在代码的 app.listen 里,监听 127.0.0.1 就只能用 127.0.0.1 访问,监听 0.0.0.0 就能用所有 ip 访问

直接用 ipv6 就行

看看有没有 ipv6 ,没有就直接内网穿透吧。

如果是内网,可以直接访问。
如果是外网,可以试一试 vs code 的 live share

你的 ipv4 的 ip 大概率是内网 ip ,就是这种 192.168.0.2 这种的,外网是访问不了的,需要你用内网穿透工具,把自己内网的 ip 和端口映射到公网上去,这样别人可以通过访问你的映射的公网域名和端口来访问你的内网服务

内网穿透了解一下,顺便看看 TCP/IP

要有公网 ip ,不行就内网穿透

谢谢各位! 查看了一下,我没有 ipv6 ! 内网穿透这个名词听过这么久,这次算是终于记住是个什么东西了。

还想问问大家,如果我把服务跑在阿里云服务器,应该就不用考虑这个东西了?


阿里云服务器除了常用端口(80,22,443 等)都是访问不到的,好像要 nginx 配置一下

#16 跑在阿里云,就不叫「本地」了。。

在服务器配置一个 node 环境,就可以跑了,服务器的 ip 是公网

云主机也可以在安全组里开放各种端口的。。

感谢各位! 这个问题我昨天搜索引擎找了半天也没搞明白,在这里一下子就解决了。
我不知道我当时应该怎么搜索才能正确的找到解决办法,对自己的搜索技巧产生了严重怀疑了。。。

刚刚又用「 node 服务让外网访问」搜索了一下,发现在第 4 条结果的「 CNode 技术社区」的 13 楼有可以解决我的疑惑的答案。
其他的搜索结果大多不得要领。

昨晚还调了个接口,用 frp 内网穿透的。不过要记得改端口。云服务器这种固定端口天天被扫描。很容易被黑

如果是家用路由器,在有公网 ip 的情况下,可以开启路由器的端口映射功能

要在本地启动一个 Node.js 服务并使其能够通过远程 IP 访问,你需要确保以下几点:

  1. 服务绑定到公共 IP 地址(通常是你的本地网络 IP 或服务器的 IP),而不仅仅是 localhost(127.0.0.1)。
  2. 防火墙/路由器设置允许外部访问相应的端口。
  3. 确保你的本地 IP 地址可以从外部访问(可能需要配置路由器或使用动态 DNS)。

以下是一个简单的 Node.js 服务器示例,它监听所有网络接口(包括远程访问):

const http = require('http');
const hostname = '0.0.0.0'; // 监听所有网络接口
const port = 3000; // 你可以使用任何未被占用的端口

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

步骤:

  1. 运行服务器:保存上述代码为 server.js 并运行 node server.js
  2. 配置防火墙:确保防火墙允许端口 3000 的流量。
  3. 路由器设置:如果需要,将端口 3000 的流量从路由器转发到你的本地机器。
  4. 获取外部 IP:使用 whatismyip.com 获取你的外部 IP,然后在浏览器中访问 http://<你的外部IP>:3000

注意:直接暴露本地服务到互联网可能会带来安全风险,建议使用防火墙、VPN 或反向代理来增强安全性。

回到顶部