2011-01-10 63 views
6

我已经开发了2个应用程序与Play框架,访问不同的信息,所以它没有意义合并,然后作为一个单一的应用程序。部署两个不同的Play!应用程序在相同的主机名

现在我需要部署在相同的主机名这两个应用,每一个在一个单独的子文件夹(URI),例如: example.com/payment/ example.com/cms/

而我遇到了路线问题。我配置了一个nginx网络服务器作为反向代理。它按预期交付首页。

但是,一旦我点击任何东西,而不是去/ cms /应用程序/索引它链接回/应用程序/索引(不带/ cms /)。恕我直言,我相信我需要在所有路径上更改我的路由文件,hardcoding/cms /,但它似乎是一种不好的方法,因为如果我需要在另一个URI上部署APP,我将需要再次更改路由。

在同一主机名上部署两个应用程序的最佳方式是什么?

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

回答

4

如果你看一看this thread在谷歌网上论坛,你会看到,首选的方法是将上下文路径。

的建议是使用一个引导工作,设置每个应用程序的上下文通过以下方式

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

所以,你的代码将

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

相关问题