发布于2026-07-16 阅读(0)
扫一扫,手机访问
说到在Ubuntu上配置Node.js的网络,很多新手容易卡在第一步。其实这事儿拆开来看并不复杂,主要分两层:先把系统层面的网络搞通,再让Node.js应用正确地监听端口。我们今天就把这两层掰开揉碎了讲清楚。

在正式开始配置Node.js的网络之前,有一件基础工作得先搞定——确保Ubuntu系统的网络接口本身是通的。这一步看似简单,但踩坑的人可不少。尤其是生产环境,静态IP几乎是标配,家用环境用动态IP倒也无妨。
Ubuntu 20.04及之后版本,网络配置通过netplan来管理。你需要编辑对应的YAML文件,通常位于/etc/netplan/01-netcfg.yaml,然后按以下格式配置静态IP:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: ["192.168.1.100/24"]
gateway4: 192.168.1.1
nameservers:
addresses: ["8.8.8.8", "8.8.4.4"]
注意这里的eth0是网络接口名称,实际名称可能因机器而异,可以通过ip addr命令查看。保存文件后,执行sudo netplan apply让配置生效。最后用ip addr show eth0验证一下IP是否已经正确分配。
如果不需要固定IP,保持dhcp4: yes(默认值)即可,系统会自动从路由器获取IP地址。基本不需要额外操作,重启网络服务或者重启电脑就生效了。
ping www.baidu.com,如果能收到回复,说明网络基本正常。cat /etc/resolv.conf,确认DNS服务器地址配置正确。系统网络没问题之后,就该让Node.js应用上场了。关键就一个点:让应用监听到正确的IP和端口,这样才能接收外部请求。
使用Node.js内置的http模块创建服务器时,通过listen()方法指定IP和端口:
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(3000, '192.168.1.100', () => {
console.log('Server running at http://192.168.1.100:3000/');
});
192.168.1.100:这里需要替换成你Ubuntu系统的静态IP,或者直接写0.0.0.0监听所有网络接口。3000:端口号,确保未被其他应用占用。可以用netstat -tulnp | grep 3000检查一下。通过环境变量管理网络参数,便于在不同环境(开发/生产)中切换配置:
const http = require('http');
const port = process.env.PORT || 3000;
const host = process.env.HOST || '127.0.0.1';
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, host, () => {
console.log(`Server running at http://${host}:${port}/`);
});
启动应用时,通过命令行设置环境变量:
PORT=3000 HOST=192.168.1.100 node app.js
或者在package.json的scripts中添加:
"scripts": {
"start": "PORT=3000 HOST=192.168.1.100 node app.js"
}
运行npm start即可启动应用。
直接暴露Node.js应用到公网,安全风险不小。建议使用Nginx作为反向代理,隐藏Node.js端口,同时还能提供HTTPS支持、负载均衡等功能。这一步对于生产环境几乎是标配。
sudo apt update
sudo apt install nginx
编辑Nginx配置文件(如/etc/nginx/sites-available/default),添加以下内容:
upstream node_app {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://node_app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
保存后,测试Nginx配置语法:sudo nginx -t,确认没有错误。然后重启Nginx:sudo systemctl restart nginx。
sudo ufw allow 3000),或者Nginx配置是否正确。kill -9 $(lsof -t -i:3000)),或者IP地址是否写错了。ip addr),或者路由器是否允许该IP访问外网。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8