【问题标题】:GAE sub-domain within app.yamlapp.yaml 中的 GAE 子域
【发布时间】:2016-08-16 15:50:34
【问题描述】:

是否可以将 app.yaml 配置为使用两个不同的 PHP 脚本,一个处理裸域,另一个处理所有其他子域?

runtime: php55
api_version: 1

handlers:
- url: /.*
  script: naked.php
- url: /.*.mydomain.com
  script: sub-domains.php

我现在正在阅读模块 - 这能解决我的问题吗?

编辑 |这个链接让我相信我可以通过使用服务和自定义调度配置来实现我所追求的目标?

https://cloud.google.com/appengine/docs/python/config/dispatchref

【问题讨论】:

    标签: php google-app-engine


    【解决方案1】:

    不可能使用app.yaml 模式路由,因为这些模式仅应用于所请求 URL 的文件路径部分(没有域名)。

    是的,模块可以映射到不同的域,路由基于dispatch.yaml 文件,看起来有点像这样:

    dispatch:
      - url: "mydomain.com/*"
        module: naked_domain_module
    
      - url: "*mydomain.com/*"
        module: subdomain_module
    

    注意事项:

    • dispatch.yaml 中的规则顺序很重要 - 第一场比赛获胜
    • 没有匹配的请求被发送到默认模块(您可能需要重新调整规则顺序/内容,具体取决于您是否要将模块之一设为默认模块)
    • 您无法在开发服务器(不支持主机名路由)上测试此路由,除非您在请求路径中还有更具体的模式 - 可能仅用于本地测试? - 您可以为其添加调度规则,

    像这样:

    - url: "*/naked/*"
      module: naked_domain_module
    

    但在这种情况下,您还需要考虑 naked_domain_moduleapp.yaml 路由中添加的路径模式,并在生产中部署时恢复它。如果您在生产中保留此路径模式,那么您不需要所有这些模块故事,因为您可以直接在 app.yaml 中锁定它。

    澄清:仅使用调度文件的自动路由不适用于本地开发服务器,模块工作正常,除非您需要自己向相应的模块“域”(实际上是不同的侦听端口)发出请求。这是开发服务器在这种情况下的行为示例,显示了每个模块的基本 URL:

    /usr/bin/python2.7 /usr/local/google_appengine/dev_appserver.py --host 0.0.0.0 --log_level=debug dispatch.yaml main/main.yaml buildin/buildin.yaml
    WARNING  2016-08-16 16:11:18,474 application_configuration.py:786] Hostname routing is not supported by the development server. The following dispatch entries will not match any requests:
    <DispatchEntry 
        url=buildin-dot-myapp.appspot.com/* 
        service=None 
        module=buildin
        >
    INFO     2016-08-16 16:11:18,506 sdk_update_checker.py:229] Checking for updates to the SDK.
    INFO     2016-08-16 16:11:18,716 sdk_update_checker.py:257] The SDK is up to date.
    INFO     2016-08-16 16:11:18,884 api_server.py:205] Starting API server at: http://localhost:36398
    INFO     2016-08-16 16:11:18,885 dispatcher.py:185] Starting dispatcher running at: http://0.0.0.0:8080
    INFO     2016-08-16 16:11:18,890 dispatcher.py:197] Starting module "default" running at: http://0.0.0.0:8081
    INFO     2016-08-16 16:11:18,893 dispatcher.py:197] Starting module "buildin" running at: http://0.0.0.0:8082
    INFO     2016-08-16 16:11:18,897 admin_server.py:116] Starting admin server at: http://localhost:8000
    

    【讨论】:

      【解决方案2】:

      您正在寻找 App Engine 调度: https://cloud.google.com/appengine/docs/php/how-requests-are-routed

      dispatch.yaml 的详细信息在这里: https://cloud.google.com/appengine/docs/php/config/dispatchref

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2011-06-28
        • 2013-11-16
        • 2018-05-22
        • 1970-01-01
        • 2019-02-11
        • 2017-06-27
        • 2012-11-13
        • 2015-09-20
        • 2013-03-28
        相关资源
        最近更新 更多