我正在尝试在同一台服务器上运行两个不同的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,但它没有用)
感谢。
答案 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>
请注意,您需要在应用中为每条路线添加前缀,以反映app1
和app2
的文件夹路径,例如:
<a href="app1@routes.Application.foo()">foo site</a>
<a href="app2@routes.Application.bar()">bar site</a>