2016-08-16 2 views
0

Можно ли настроить app.yaml для использования двух разных PHP-скриптов с одной обработкой голого домена и другой обработкой всех других поддоменов?Под-домен GAE в пределах app.yaml

runtime: php55 
api_version: 1 

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

Я читаю модули прямо сейчас - это то, что решит мою проблему?

EDIT | Эта ссылка побуждает меня поверить, что я могу добиться того, что мне нужно, используя службы и настраиваемую конфигурацию отправки?

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

ответ

1

Невозможно использовать схему маршрутизации app.yaml, так как шаблоны применяются только к части пути к файлу запрашиваемого URL (без имени домена).

Да, модули могут быть отображены в различных областях, с маршрутизацией на основе файла dispatch.yaml, который будет выглядеть как-то вдоль этих линий:

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

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

Примечания:

  • порядок правил в dispatch.yaml вопросов - первые победы в матче
  • Запросы без совпадений отправляются модулю по умолчанию (вам может потребоваться перетасовать порядок/содержание правила, в зависимости от того, хотите ли вы сделать один из модулей es по умолчанию)
  • Вы не можете протестировать эту маршрутизацию на devserver (который не поддерживает маршрутизацию имени хоста), если у вас также нет более конкретного шаблона в пути запроса - возможно, для локального тестирования? - для которых вы можете добавить правило отправки,

так:

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

Но в этом случае необходимо учитывать, что добавлен шаблон пути в app.yaml маршрутизации, в котором naked_domain_module «s, а также и вернуться это при развертывании в производстве. Если вы сохраните этот шаблон пути в процессе производства, вам не понадобится вся эта история модуля, поскольку вы можете запереть его непосредственно в app.yaml.

Уточнение: только автоматическая маршрутизация с использованием файла отправки не работает с локальным devserver, модули работают нормально, за исключением того, что вам нужно самому запросить соответствующие модули «домены» (фактически разные порты отправления). Это пример того, как ведет себя devserver в таком случае, показывающий базовый 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 
+0

Если второй * my-domain.com/* не может быть * .mydomain.com/* ??? –

+0

Yep - ошибка копирования-вставки. Исправлена ​​:) –

Смежные вопросы