【问题标题】:Google Cloud: Storage and App Engine谷歌云:存储和应用引擎
【发布时间】:2018-05-09 19:21:16
【问题描述】:

我有一个 Web 应用程序,它分别具有前端 (React) 和后端 (Express),因此在我的本地环境中,前端在 localhost:8080 上运行,而后端在 localhost:3000 上运行。

我可以将后端服务器部署到在 https://[app_name].appspot.com 上运行的 App Engine。

然后我还通过引用 this 将前端部署到 Google Cloud Storage。但是,前端应用程序也在 https://[app_name].appspot.com 上运行。
当我打开应用程序时,它显示前端但 api 调用不起作用。

我还没有自定义域,我也在使用 postgresql。 有没有办法为前端和后端设置不同的网址?还是我在设置应用程序的结构中做错了什么?

【问题讨论】:

    标签: node.js reactjs google-app-engine deployment google-cloud-storage


    【解决方案1】:

    映射到域名(默认appspot.com 或自定义)是在应用程序级别完成的,而不是在服务级别。作为同一个应用程序的一部分,您的两个服务将因此映射到同一个域。

    这里的旁注:我假设您为您的服务选择了不同的服务/模块名称(在各自的.yaml 文件中),否则它们在部署时会相互覆盖。

    将请求路由到一项服务或另一项服务是基于 URL 中文件路径部分的模式匹配完成的,而不是主机/域部分。第一场比赛获胜,没有比赛总是进入默认服务。

    因此,前端通常是default 服务(您也可以不命名)。任何其他更专用的服务在其 URL 路径中都有一个标识模式,用于routing with a dispatch.yaml file。例如,在您的情况下,后端服务将是专门的服务,并且可以提供以/backend/ 开头的 URL,因此可能具有像这样的dispatch.file

    dispatch:
      - url: "*/backend/*"
        module: <backend-service-name>
    

    或多或少相关:

    注意:您还必须考虑专业服务中的特定模式。例如,如果您的后端服务当前为 /index.html 的请求提供服务,则您必须将其调整为为 /backend/index.html 提供服务。

    可能可以在没有调度文件的情况下使用其他路由方法(请参阅整个 How Requests are Routed 部分)使两个服务并行工作,但恕我直言,设置和更脆弱。尤其是在尝试同时使用自定义域时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-30
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多