javascript - 在dispatch.yaml中的同一域上配置两个服务

标签 javascript google-app-engine gcloud

努力让它发挥作用。我有一个由两个服务组成的应用程序 - 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 时,它按预期工作。但是,当我访问<frontend-app>-dot-apt-aleph-767.appspot.com/backend时,我得到了404。 。这没有意义,因为当我直接导航到后端 URL 时,它会按预期工作。

plzhalp。

最佳答案

为此,您需要后端服务来处理对 /<somepath> 的请求。和/backend/<somepath>以相同的方式。

检查您的后端应用程序日志,您会看到您期望它处理但它响应 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>

或者,您可以删除 "<frontend-app>-dot-apt-aleph-767.appspot.com/backend/"来自调度文件的 URL 并教导您的前端服务接受,但重定向任何 /backend/<somepath>请求它看到 <backend-app>-dot-apt-aleph-767.appspot.com/<somepath> .

关于javascript - 在dispatch.yaml中的同一域上配置两个服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47158703/

相关文章:

javascript - 将 jQuery 事件作为变量传递

javascript - jQuery 在悬停时显示/隐藏 div(多个实例)

php - 有什么方法可以针对各种错误直接发送 'returned' 电子邮件吗?

python - Google App Engine cron 作业失败并出现 404 错误

javascript - 在 Angular 模板中显示来自 CKEditor 的原始 HTML 标记

python - 如何创建国际化的 Google App Engine 应用程序

ssh - Google Cloud VM 实例 SSH 连接超时约 60 秒,保活 30 秒

linux - 使用 gcloud metadata-from-file shutdown-script 优雅地停止 docker 容器

docker - 为 gcloud 构建提交指定 Dockerfile

javascript - 编码 JSONP &lt;script src = Request