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

Ubuntu服务器部署Next.js应用:如何通过IP加端口访问?

解决Ubuntu下Next.js无法通过IP+端口访问的问题

核心问题:绑定地址与端口权限限制

Next.js 默认将服务绑定到 127.0.0.1(仅服务器本地可访问),而非 0.0.0.0(允许外部IP访问),这是外部无法访问的核心原因。此外,服务器防火墙或云服务商安全组未放行目标端口也会导致该问题。

1. 修改Next.js启动绑定地址

开发模式

  • 临时启动:执行命令
    npm run dev -- -H 0.0.0.0
    
    需指定自定义端口(如8080)则执行:
    npm run dev -- -H 0.0.0.0 -p 8080
    
  • 永久修改:编辑项目根目录的package.json,更新scripts中的dev命令:
    "scripts": {
      "dev": "next dev -H 0.0.0.0",
      // 其他脚本内容...
    }
    
    之后直接执行npm run dev即可生效。

生产模式

先完成项目构建:

npm run build
  • 临时启动:执行命令
    next start -H 0.0.0.0
    
    指定端口示例:
    next start -H 0.0.0.0 -p 8080
    
  • 永久修改:编辑package.json的scripts,更新start命令:
    "scripts": {
      "start": "next start -H 0.0.0.0",
      // 其他脚本内容...
    }
    
    之后执行npm run start即可。

2. 放行服务器端口(Ubuntu防火墙)

若使用ufw防火墙,需放行目标端口(以3000为例):

sudo ufw allow 3000/tcp
sudo ufw reload

执行sudo ufw status确认规则已生效。

3. 检查云服务器安全组(云主机场景)

如果是云服务商(如阿里云、腾讯云等)提供的服务器,需在控制台安全组规则中添加入站规则,放行目标端口的TCP流量。

4. 验证服务监听状态

在服务器上执行以下命令(替换为你的端口),确认服务已绑定到0.0.0.0:

netstat -tulpn | grep 3000

输出中若包含0.0.0.0:3000则绑定正确;若为127.0.0.1:3000,需重新检查启动命令。

补充:使用进程管理器(如pm2)的情况

若用pm2管理Next.js进程,启动命令需带上绑定参数:

pm2 start npm --name "next-app" -- run start -- -H 0.0.0.0 -p 3000

内容的提问来源于stack exchange,提问作者Viscosity medium

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:15:58