首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提供默认文件的服务

提供默认文件的服务
EN

Stack Overflow用户
提问于 2019-07-26 14:25:37
回答 2查看 74关注 0票数 0

我的app应用程序中有两种不同的服务,叫做auth和app。auth服务工作得非常好,图像、css、js和php都得到了正确的服务和执行。当我第一次启动app应用程序时,auth服务也是我的默认服务。

我的问题是应用服务。起初,我得到的只是一堆太多的重定向错误,但是后来我能够修复这个错误,但是现在没有一个CSS JS,或者图像被应用程序服务正确地处理了。唯一被服务的CSS实际上是来自auth服务,并且没有JS被服务,并且有一个来自auth服务的背景图像被服务。同样,这是两个完全不同的东西,甚至生活在他们自己的自定义子域中。

另外,我的auth服务中的路由器也被用作我的应用程序服务的路由器。

我认为所有这些问题都与我的默认服务(我甚至不应该再使用它)干扰我的应用程序服务有关(而且它不会影响我的auth服务,因为当涉及到google云时,它们是相同的)。这是我的app.yaml。除了服务名称和路由器名称之外,这两个服务都是相同的:

代码语言:javascript
复制
runtime: php73
service: app
entrypoint: serve /approuter.php

handlers:

- url: /assets
  static_dir: assets

# Serve static files as static resources.
- url: /(.+\.(gif|png|jpg|svg|webp|jpeg|js))$
  static_files: \1
  upload: .+\.(gif|png|jpg|svg|webp|jpeg|js)$

- url: /style
  static_dir: style

- url: /js
  static_dir: js

- url: /.*
  script: auto

这是我的dispatch.yaml:

代码语言:javascript
复制
dispatch:

  - url: "app.example.com/"
    service: app

  - url: "auth.example.com/"
    service: auth

因此,最后我的问题是:

,当涉及到不同的服务时,我如何才能真正地分离关注点呢?(ie...not将默认服务提供给我的应用程序服务)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-26 17:44:10

所以这个答案真的很简单,但是它没有被记录在任何地方,所以我想在这里给出一个非常深入的答案。

TLDR;答案如下(dispatch.yaml):

代码语言:javascript
复制
dispatch:

  - url: "app.example.com/*"
    service: app

  - url: "auth.example.com/*"
    service: auth

从字面上说,在每条路的末尾加一个*.让我们讨论一下这个问题。

FIRST记住,我的默认服务就是现在已经成为"auth“服务的服务。这很快就会很重要。

我认为每个人都明白here...the *在域名之后发生了什么,这意味着它需要匹配指向该域名的任何url。在没有*的情况下,服务所提供的唯一路径是我的根路径(或/)。其他一切都是由默认的service....which处理的,这使我们了解到为什么我在应用程序服务中看到了默认服务中的静态资产。

当anything遇到dispatch.yaml没有专门处理的URL时(因此,除了app.example.com和auth.example.com的根),它将“默认”到默认服务,如果您还记得,这就是我的auth服务。这就是为什么我的auth服务看起来运行得很完美,而我的应用程序服务却有问题。

因此,最后,将星号添加到调度URL中,使app引擎能够导航到正确的子文件夹。

票数 0
EN

Stack Overflow用户

发布于 2019-07-26 20:52:05

请记住,您仍然需要项目中的默认服务,请参阅默认服务在谷歌的应用引擎中有什么用途?

我的建议是使您的app服务成为默认服务,并从dispatch.yaml文件中删除相应的条目(不匹配任何分派规则的请求将发送到默认服务)。不要忘记使用app服务名称删除现有部署)。

Adam的回答也适用于auth服务(您需要通配符)。来自语法

提示:您可以在url元素中包括*通配符这样的glob模式;但是,这些模式只能在主机名之前和URL路径的末尾使用。 可以包含主机名和URL路径的URL模式。Glob字符可用于匹配模式。只有在模式开始和模式结束时才能指定Glob字符。

auth服务可能运行良好,因为它实际上是由当前默认服务(即它的旧版本)提供的。您可以在developer console 版本页面中检查哪些版本和服务处于活动状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57222061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档