【问题标题】:Configuring two services on the same domain in dispatch.yaml在 dispatch.yaml 中配置同域的两个服务
【发布时间】:2017-11-07 13:03:01
【问题描述】:

努力让它发挥作用。我有一个由两个服务组成的应用程序 - Angular 中的前端,Node 中的后端。

派送:

  - url: "<frontend-app>-dot-apt-aleph-767.appspot.com/"
    service: <frontend-app>
  - url: "<frontend-app>-dot-apt-aleph-767.appspot.com/backend/"
    service: <backend-app>

这是gcloud app describe的输出:

dispatchRules:
- domain: <frontend-app>-dot-apt-aleph-767.appspot.com
  path: /
  service: <frontend-app>

- domain: <frontend-app>-dot-apt-aleph-767.appspot.com
  path: /backend/*
  service: <frontend-app>

当我导航到前端应用程序的 url 时,它按预期工作。但是,当我转到 &lt;frontend-app&gt;-dot-apt-aleph-767.appspot.com/backend 时,我得到了 404。这没有任何意义,因为当我直接导航到后端 URL 时,它会按预期工作。

plzhalp.

【问题讨论】:

    标签: javascript google-app-engine gcloud


    【解决方案1】:

    为此,您需要后端服务以相同的方式处理对/&lt;somepath&gt;/backend/&lt;somepath&gt; 的请求。

    检查您的后端应用程序日志,您会看到您希望它处理但它以 404 响应的请求包含 /backend 前缀,而直接到达后端 URL 的请求则没有。

    还请注意,调度规则的顺序很重要 - 您首先希望更具体的规则,否则永远无法达到,因为更通用的规则将匹配它之前的请求。您可能还想在请求路径上放置一些通配符:

    dispatch:
    - url: "<frontend-app>-dot-apt-aleph-767.appspot.com/backend/*"
      service: <backend-app>
    - url: "<frontend-app>-dot-apt-aleph-767.appspot.com/*"
      service: <frontend-app>
    

    进一步完善:

    • 最后一个 URL 可以删除,因为它是多余的 - 这就是 default routing by URL 行为
    • 由于后端服务也需要处理/backend/*,因此您可以通配第一个 URL 的主机部分,这对于 appspot.com 和自定义域(如果您有的话)都可以使用:

    这样就足够了:

    dispatch:
    - url: "*/backend/*"
      service: <backend-app>
    

    或者,您可以从调度文件中删除"&lt;frontend-app&gt;-dot-apt-aleph-767.appspot.com/backend/" URL,并教您的前端服务接受,但将它看到的任何/backend/&lt;somepath&gt; 请求重定向到&lt;backend-app&gt;-dot-apt-aleph-767.appspot.com/&lt;somepath&gt;

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 2022-11-23
      • 2015-05-02
      • 2022-01-17
      • 2020-10-07
      相关资源
      最近更新 更多