¿Es posible configurar app.yaml para usar dos scripts PHP distintos, uno manejando el dominio simple y otro manejando todos los demás subdominios?

runtime: php55
api_version: 1

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

Estoy leyendo sobre módulos en este momento, ¿es esto lo que resolverá mi problema?

EDITAR | Este enlace me lleva a creer que puedo lograr lo que busco utilizando servicios y una configuración de envío personalizada.

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

0
Alex.Barylski 16 ago. 2016 a las 18:50

2 respuestas

La mejor respuesta

No es posible usar el patrón de enrutamiento app.yaml ya que los patrones se aplican solo en la parte de la ruta del archivo de la URL solicitada (sin el nombre de dominio).

Sí, los módulos se pueden asignar a diferentes dominios, con enrutamiento basado en el archivo dispatch.yaml, que se vería de alguna manera en este sentido:

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

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

Notas:

  • el orden de las reglas en dispatch.yaml es importante: gana el primer partido
  • las solicitudes sin coincidencias se envían al módulo predeterminado (es posible que deba mezclar el orden / contenido de las reglas, dependiendo de si desea que uno de los módulos sea el predeterminado)
  • no puede probar este enrutamiento en el servidor de desarrollo (que no admite el enrutamiento de nombre de host) a menos que también tenga un patrón más específico en la ruta de solicitud, ¿tal vez solo para pruebas locales? - para lo cual puede agregar una regla de envío,

Así:

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

Pero en este caso, también debe tener en cuenta ese patrón de ruta agregado en el enrutamiento app.yaml de naked_domain_module y revertirlo al implementarlo en producción. Si mantiene este patrón de ruta en producción, entonces no necesita toda la historia del módulo, ya que puede engancharse en app.yaml directamente.

Aclaración: solo el enrutamiento automático usando el archivo de despacho no funciona con el devserver local, los módulos funcionan bien excepto que usted necesita hacer las solicitudes a los respectivos "dominios" del módulo (en realidad, puertos de escucha diferentes) usted mismo. Esta es una muestra de cómo se comporta el devserver en tal caso, mostrando la URL base para cada módulo:

/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
1
Dan Cornilescu 16 ago. 2016 a las 17:10

Estás buscando despacho de App Engine: https://cloud.google.com/appengine/docs/php / cómo-se-envían-las-solicitudes

Los detalles sobre dispatch.yaml están aquí: https://cloud.google.com/appengine/docs/php/config/dispatchref

¡Espero que esto ayude!

0
Justin Beckwith 16 ago. 2016 a las 16:21