【问题标题】:App Engine matching any "subdomain" to my serviceApp Engine 将任何“子域”与我的服务匹配
【发布时间】:2022-11-02 04:05:07
【问题描述】:

我在 Google App Engine 上有一个 Strapi 应用程序作为默认服务。

App Engine 生成的默认 URL 是 https://my-project.uc.r.appspot.com

当我为我的默认服务创建任何其他版本或部署其他服务时,新 URL 将类似于:https://[标识符]-dot-my-project.uc.r.appspot.com

我的问题是,如果我更换[标识符]无论如何,它都会打开我的 Strapi 应用程序根页面。

我不认为这与 Strapi 有任何关系,它可能是 App Engine 的一个功能。

我的问题是:如何阻止这种情况发生?我只想匹配正确的 URL。也就是说,如果我创建一个“开发”版本,我应该能够使用以下 URL 访问它:https://dev-dot-my-project.uc.r.appspot.com,但我不希望匹配任何其他 URL,例如:https://12345-dot-my-project.uc.r.appspot.com

我正在使用带有default app.yaml from Strapi docs 的标准环境

runtime: nodejs16

instance_class: F2

env_variables:
  HOST: '0.0.0.0'
  NODE_ENV: 'production'
  DATABASE_NAME: 'strapi'
  DATABASE_USER: 'postgres'
  DATABASE_PASSWORD: '<password>'
  INSTANCE_CONNECTION_NAME: '<instance_identifier>'

beta_settings:
  cloud_sql_instances: '<instance_identifier>'

当应用程序部署到 App Engine 时,会自动修改 app.yaml 以添加一些默认参数。

runtime: nodejs16
env: standard
instance_class: F2
handlers:
  - url: .*
    script: auto

我想这可能是url: .* 的原因,并试图将其更改为url: /.* (Docs),但App Engine 仍然在最后再次添加url: .*,它将有两个处理程序。

【问题讨论】:

    标签: google-app-engine strapi


    【解决方案1】:

    这是预期的行为。根据documentation

    如果请求与主机名的 PROJECT_ID.REGION_ID.r.appspot.com 部分匹配,但包含不存在的服务、版本或实例名称,然后请求被路由到默认服务。

    在您的示例中,当您点击 url - https://12345-dot-my-project.uc.r.appspot.com 并且结果 '12345' 不是有效版本时,默认服务 - https://my-project.uc.r.appspot.com 将接管

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-29
      • 2018-02-06
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 2010-10-23
      相关资源
      最近更新 更多