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

在Tomcat服务器部署Angular Cli应用:Node后端部署及404问题求助

解决Angular+Node.js+MongoDB部署到Tomcat后的API 404问题

首先得明确:Tomcat是Java Web容器,它没法直接运行Node.js的server.js,你的后端Node服务是独立的HTTP服务,得单独部署,不能和Angular的静态文件混在Tomcat的webapps目录里。咱们一步步来操作:

1. 上传Node后端文件到服务器

你需要把整个后端项目(至少包含server.js、package.json、package-lock.json,还有其他依赖的配置文件、路由文件等)上传到服务器的一个独立目录,比如/home/your-username/node-backend/(替换成你自己的用户目录或合适的路径)。

用scp命令上传的示例:

# 上传单个核心文件
scp server.js package.json package-lock.json your-server-username@your-server-ip:/home/your-username/node-backend/

# 如果是整个后端文件夹,用递归上传更方便
scp -r ./your-local-backend-folder/ your-server-username@your-server-ip:/home/your-username/node-backend/

2. 在服务器上安装Node.js依赖

登录到服务器,进入刚才上传的后端目录,安装所需依赖:

ssh your-server-username@your-server-ip
cd /home/your-username/node-backend/
npm install

3. 启动Node后端服务(后台持久运行)

直接用node server.js启动的话,一旦你关闭SSH连接,服务就会停止,所以推荐用进程管理器pm2来后台运行:

  • 先全局安装pm2:
    npm install -g pm2
    
  • 启动服务并命名方便管理:
    pm2 start server.js --name "angular-node-backend"
    
  • 验证服务状态:
    pm2 list
    # 查看运行日志排查问题
    pm2 logs angular-node-backend
    

这样你的Node服务就会在3000端口持续运行了。

4. 调整前端API请求配置

现在有两种方式让Angular前端能访问到Node后端:

方式一:修改前端API基础地址

在Angular项目的生产环境配置文件(src/environments/environment.prod.ts)里,把API基础路径改成服务器的IP+Node服务端口,比如:

export const environment = {
  production: true,
  apiUrl: 'http://your-server-ip:3000/api'
};

然后重新执行ng build --prod,把新生成的dist目录内容上传到Tomcat的webapps目录。

方式二:配置Tomcat反向代理(更优雅)

如果不想暴露Node服务的3000端口,可以在Tomcat里配置反向代理,把/api开头的请求转发到Node服务的3000端口:

  1. 确保Tomcat的mod_proxy和mod_proxy_http模块已经启用(通常在conf/server.xml里,去掉相关模块的注释)。
  2. 在Tomcat的conf/Catalina/localhost/ROOT.xml(或者你的项目对应的XML配置文件)里添加如下配置:
<Context path="" docBase="your-angular-dist-folder">
  <Valve className="org.apache.catalina.valves.ProxyValve"
         proxyPass="/api http://localhost:3000/api"
         proxyPassReverse="/api http://localhost:3000/api"/>
</Context>
  1. 重启Tomcat服务,这样前端请求http://your-server-ip:8080/api/models就会被自动转发到http://localhost:3000/api/models,既避免跨域问题,也不用暴露后端端口。

关键注意事项

  • 如果用方式一,要确保服务器的3000端口已经通过防火墙规则开放,允许外部访问。
  • 别忘了在服务器上启动并运行MongoDB服务,确保Node后端能正常连接数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:01:00