2011-01-10 14 views
6

He desarrollado 2 aplicaciones con Play Framework, accediendo a información diferente, por lo que no tiene sentido combinarlas como una sola aplicación.¡Implementando dos juegos diferentes! aplicaciones en el mismo nombre de host

ahora tengo que desplegar ambas aplicaciones en el mismo nombre de host, cada una en una sub-carpeta separada (URI), por ejemplo: example.com/payment/ example.com/cms/

Y Estoy teniendo problemas con las rutas. Configuré un servidor web nginx para que funcione como proxy inverso. Entregas la primera página como se esperaba.

Pero una vez que hago clic en algo, en lugar de ir a/cms/Aplicación/índice, vuelve a vincular a/Aplicación/índice (sin/cms /).

IMHO Creo que necesito cambiar mi archivo de rutas, hardcoding/cms/en todas las rutas, pero parece un mal enfoque porque si tengo que implementar la aplicación en otra URI, tendré que cambiar las rutas nuevamente.

¿Cuál es la mejor manera de implementar dos aplicaciones en el mismo nombre de host?

----- nginx.conf ----- 
... 
... 
... 

    location /cms { 
     proxy_pass  http://localhost:9001/; 

     proxy_redirect   off; 
     proxy_set_header  Host   $host; 
     proxy_set_header  X-Real-IP  $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 

    location /payment { 
     proxy_pass  http://localhost:9002/; 

     proxy_redirect   off; 
     proxy_set_header  Host   $host; 
     proxy_set_header  X-Real-IP  $remote_addr; 
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 

... 
... 
... 
----- nginx.conf ----- 

Respuesta

4

Si se echa un vistazo a this thread en los Grupos de Google, verá que el enfoque preferido es el camino que el contexto.

La recomendación es utilizar un trabajo de arranque para establecer el contexto por aplicación de la siguiente manera

Play.ctxPath="/project1"; 
Router.detectChanges(Play.ctxPath); 

lo que el código sería

Play.ctxPath="/cms"; 
Router.detectChanges(Play.ctxPath); 

etc.

Cuestiones relacionadas