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



我正试图在同一台服务器上运行两个不同的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>

路线、代码和所有内容都是正确的,只是我无法让这些应用程序协同工作。

(我也试着实现在线指南上显示的负载平衡器,但它不起作用)

谢谢。

我认为不能有两个主机名相同的虚拟主机-这没有意义,虚拟主机用于提供不同的主机名,例如,用于提供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>

James的答案是正确的,你只需要根据自己的需求进行调整,我认为这是开箱即用的:

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

相关内容

最新更新