2011-01-10 19 views
6

Opracowałem 2 aplikacje z Play Framework, uzyskując dostęp do różnych informacji, więc nie ma sensu scalać się wtedy jako pojedyncza aplikacja.Rozmieszczanie dwóch różnych gier! aplikacje na tej samej nazwie hosta

Teraz muszę wdrożyć zarówno aplikacje na tej samej nazwy hosta, każdy w osobnym podkatalogu (URI), na przykład: example.com/payment/ example.com/cms/

I Mam problemy z trasami. Skonfigurowałem serwer WWW nginx do pracy jako odwrotny serwer proxy. Dostarcza pierwszą stronę zgodnie z oczekiwaniami.

Ale raz klikam cokolwiek, zamiast iść do/cms/Application/index to linki z powrotem do/Application/index (bez/cms /).

IMHO Uważam, że potrzebuję zmienić mój plik tras, hardcoding/cms/na wszystkich ścieżkach, ale wygląda na to, że jest to złe podejście, ponieważ jeśli potrzebuję wdrożyć aplikację na innym URI, będę musiał ponownie zmienić trasę.

Jaki jest najlepszy sposób na wdrożenie dwóch aplikacji na tej samej nazwie hosta?

----- 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 ----- 

Odpowiedz

4

Jeśli przyjrzeć this thread na Google Groups, widać, że preferowane jest podejście do ścieżki kontekstu.

Zalecenie jest użycie bootstrap pracy ustawić kontekst jeden wniosek w następujący sposób

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

Tak Twój kod będzie

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

itp

Powiązane problemy