开始两个游戏!同名服务器上的应用程序

时间:2014-10-23 20:20:42

标签: apache playframework-2.0

我正在尝试在同一台服务器上运行两个不同的Web应用程序,使用相同的域名,例如:

www.example.com/app1

www.example.com/app2

应用程序是使用Play开发的!框架,我正在使用Apache作为反向代理。我尝试按照在线指南,设置虚拟主机等等,但似乎没有任何作用,只有第一个应用程序可以访问,而第二个应用程序不可用。

这是我现在直到使用我的apache配置文件:

<VirtualHost *:80>
  ProxyPreserveHost On
  DocumentRoot "/home/App1/"
  ServerName http://www.example.com/app1
  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/app1
  ProxyPassReverse / http://127.0.0.1:9000/app1
  LogLevel debug
</VirtualHost>
<VirtualHost *:80>
  ProxyPreserveHost On
  DocumentRoot "/home/App2"
  ServerName http://www.example.com/app2
  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:8000/app2
  ProxyPassReverse / http://127.0.0.1:8000/app2
  LogLevel debug
</VirtualHost>

路由,代码和常规是正确的,只是我无法让这些应用程序协同工作。

(我也尝试在在线指南中显示加载balacer,但它没有用)

感谢。

2 个答案:

答案 0 :(得分:2)

我认为你可以拥有两个具有相同主机名的虚拟主机 - 这没有意义,虚拟主机用于提供不同的主机名,例如,用于服务foo.example.com和bar.example.com。

我认为你想要的是大致相同的东西:

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName www.example.com
  DocumentRoot /some/path/to/something
  ProxyPass  /excluded !

  ProxyPass /app1 http://127.0.0.1:9000/app1
  ProxyPassReverse /app1 http://127.0.0.1:9000/app1

  ProxyPass /app2 http://127.0.0.1:8000/app2
  ProxyPassReverse /app2 http://127.0.0.1:8000/app2

  LogLevel debug
</VirtualHost>

答案 1 :(得分:0)

詹姆斯的回答是正确的,你只需要满足你的需要,我开拍即可开箱即用:

 <VirtualHost *:80>

    ProxyPreserveHost On
    ServerName www.example.com

    ProxyPass /app1 http://127.0.0.1:9000/
    ProxyPassReverse /app1 http://127.0.0.1:9000/


    ProxyPass /app2 http://127.0.0.1:8000/
    ProxyPassReverse /app2 http://127.0.0.1:8000/

 </VirtualHost>

请注意,您需要在应用中为每条路线添加前缀,以反映app1app2的文件夹路径,例如:

<a href="app1@routes.Application.foo()">foo site</a>

<a href="app2@routes.Application.bar()">bar site</a>