如何使用 Google Cloud Compute Engine 为 Node.JS 应用程序配置端口转发

How to configure Port Forwarding with Google Cloud Compute Engine for a Node.JS application

我正在尝试为托管在 Google 云计算引擎(Ubuntu 和 Nginx)上的 Node.js 应用程序配置端口转发(端口 80 到端口 8080)。

我的最终目标是让 url 像 "api.domain.com" 显示与 "api.domain.com:8080" 完全相同的东西(:8080 实际上有效)。

但是因为是Google平台上的虚拟服务器,不知道能做什么样的配置。

我尝试了这些解决方案但没有成功(可能是因为它是 Google 云环境):

  1. Forwarding port 80 to 8080 using NGINX
  2. Best practices when running Node.js with port 80 (Ubuntu / Linode)

这里有两个问题:

1.Where我需要配置端口转发?

2.What 我需要保存的设置或配置?

一种可能是使用 Google 云负载平衡器。 https://cloud.google.com/load-balancing/docs/

1) 创建监听 8080 端口的后端服务

2) 创建监听端口 80 的前端服务

3) 然后在此后端服务上转发前端流量

4) 奖励:您可以创建由 GCP 自动管理的 ssl 证书 https://cloud.google.com/load-balancing/docs/ssl-certificates#managed-certs

为了未来读者的利益,我在这里了解如何配置端口转发。

  1. 您需要确保 Google 平台上的防火墙配置正确。按照此处详细描述的过程进行操作:Google Cloud - Configuring Firewall Rules。您需要确保端口 80(或 HTTPS 的 443)和您的 Node.JS 端口(例如我的 8080)已打开。

  2. 您需要直接在服务器上配置端口转发。据我所知,与防火墙规则相反,这不是您可以在 Google 云平台 UI 中进行的配置。就我而言,我需要编辑位于以下位置的 Nginx 配置文件:/etc/nginx/sites-available/default.

  3. 使用此示例作为参考来编辑您的 Nginx 配置文件:nginx config for http/https proxy to localhost:3000

  4. 编辑完成后,您需要使用此命令重新启动 Nginx 服务:sudo systemctl restart nginx

  5. 使用以下命令验证 Nginx 服务的状态:sudo systemctl status nginx

  6. 您的端口应该正确重定向到您的 Node.js 应用程序。

感谢@John Hanley 和@howie 对 Nginx 配置的指导。

编辑:这个解决方案仍然有效,但接受的答案更容易。