2011-01-10 101 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); 

相關問題