努力让它发挥作用。我有一个由两个服务组成的应用程序 - 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>
当我导航到前端应用程序的网址时,它按预期工作。但是,当我去<frontend-app>-dot-apt-aleph-767.appspot.com/backend
时,我得到了404。它没有意义,因为当我直接导航到后端URL时,它按预期工作。
plzhalp。
答案 0 :(得分:1)
要实现此目的,您需要后端服务以相同的方式处理/<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>
进一步完善:
/backend/*
,所以你可以使用通配符第一个URL的主机部分,它可以与appspot.com和自定义域一起使用(如果你有一个):所以这应该足够了:
dispatch:
- url: "*/backend/*"
service: <backend-app>
或者,您可以从调度文件中删除"<frontend-app>-dot-apt-aleph-767.appspot.com/backend/"
网址,并教导您的前端服务接受,但将其看到的/backend/<somepath>
个请求重定向到<backend-app>-dot-apt-aleph-767.appspot.com/<somepath>
。