You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20下Express非80外部端口无法访问的问题求助

解决Ubuntu 20上Express非80端口无法外部访问的问题

核心排查与解决步骤

1. 修正Express监听地址(最常见问题)

Express默认app.listen(port)仅监听127.0.0.1(本地回环地址),外部主机无法连接。必须显式指定监听0.0.0.0以开放所有网卡访问:

修改代码:

dotenv.config();

const port = process.env.DB_PORT; //1166
const app  = express();

app.use(express.json());
app.use(routerIndex);

app.get('/', (req, res) => {
 res.send('ok')
})

// 关键:指定0.0.0.0监听所有网卡
app.listen(port, '0.0.0.0', () => {
 console.log('server port on :'+ port);
})

2. 验证端口监听状态

用ss命令检查1166端口是否被node进程监听在0.0.0.0:

ss -tulpn | grep 1166

正常输出应包含0.0.0.0:1166和node进程信息。若显示127.0.0.1:1166,说明仍仅监听本地,外部无法访问。

3. 检查云服务商安全组(若为云服务器)

如果服务器是阿里云、腾讯云等云服务商提供的,系统防火墙开放端口后还需在云控制台配置安全组规则,允许外部IP访问1166/tcp端口。这是极易忽略的环节。

4. 本地测试服务可用性

在服务器本地执行:

curl http://localhost:1166

若返回ok,说明服务本身正常;若本地也超时,检查是否有其他进程占用端口:

lsof -i :1166

若存在占用进程,杀掉后重新启动Express。

5. 排查网络链路问题

若以上步骤均无问题,用tcpdump抓包验证请求是否到达服务器:

sudo tcpdump -i any port 1166

在外部主机访问http://ip:1166时,观察服务器是否有数据包记录。若无记录,说明请求未到达服务器,需检查网络链路或运营商端口限制。


内容的提问来源于stack exchange,提问作者Pork Jackson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:32:27