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

如何在GCP Compute Engine上部署Node.js应用至域名子路径且不影响主站

在GCP Compute Engine上部署Node.js应用到子路径且不影响主站

首先要明确:gcloud app deploy是**GCP App Engine(平台即服务)**的部署命令,和你使用的Compute Engine(基础设施即服务)完全不是一回事,所以你根本不需要用这个命令,自然也不会覆盖主域名的站点。

要实现Node.js应用在mydomain.com/myapp路径下运行,核心思路是用反向代理(推荐Nginx,因为主站大概率也是用Nginx托管的),把访问/myapp的请求转发到你的Node.js应用进程。具体步骤如下:

1. 后台运行Node.js应用

确保你的Node.js应用在Compute Engine实例上稳定后台运行,推荐用pm2进程管理器:

  • 安装pm2:npm install -g pm2
  • 启动应用并命名:pm2 start app.js --name myapp(替换成你的实际入口文件)
  • 设置开机自启:pm2 startup,按终端提示执行生成的命令
  • 保存当前进程配置:pm2 save

此时你的应用应该监听在本地某个端口(比如默认的3000,可在代码中自定义)。

2. 配置Nginx反向代理

编辑主域名的Nginx站点配置文件(通常路径为/etc/nginx/sites-available/mydomain.com),在已有的server块中添加以下规则:

location /myapp {
    # 转发请求到Node.js应用的本地监听端口
    proxy_pass http://localhost:3000;
    # 处理WebSocket(若你的应用用到该功能)
    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;

    # 关键:如果你的Node.js应用默认处理根路径请求(比如/api、/home),需要重写路径
    # 将/myapp/xxx转换为/xxx传递给应用,取消下面一行注释即可
    # rewrite ^/myapp(.*)$ $1 break;
}

3. 验证配置并重启Nginx

  • 检查Nginx配置语法是否正确:nginx -t
  • 若没有报错,重启Nginx使配置生效:systemctl restart nginx

4. 测试访问

现在访问mydomain.com/myapp就能看到你的Node.js应用,而mydomain.com的主站内容完全不受影响。

额外注意事项

  • 无需对外开放Node.js应用的监听端口(比如3000),因为Nginx是在本地转发请求,防火墙只需开放80/443端口即可。
  • 如果主站使用其他Web服务器(如Apache),思路一致:添加对应子路径的反向代理规则,转发到Node.js的本地端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:25:18