如何在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
相关产品推荐
相关产品推荐

