Tiz
Tiz

Reputation: 423

Start two Play! application on same name server

I'm trying to run two different web application on the same server, with the same domain name, like :

www.example.com/app1

www.example.com/app2

The applications are developed using Play! framework, and I'm using Apache as a reverse proxy. I tried to follow the online guide, set up the virtual host and etc..., but nothing seem to works, only the first app is reacheble, while the second isn't.

This is as far as I got untill now with my apache config file :

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

Route, code and everithing are correct, it's just that I can't get these apps work together.

(I also tried to implement the load balacer showed on the online guide, but it didn't work)

Thanks.

Upvotes: 0

Views: 87

Answers (2)

biesior
biesior

Reputation: 55798

James' answer is correct, you just need to fit it to your needs, I shoot that works out of the box:

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

Note, that you will need to prefix EVERY route in your apps to reflect the folder path with app1 and app2, like:

<a href="[email protected]()">foo site</a>

<a href="[email protected]()">bar site</a>

Upvotes: 0

James Roper
James Roper

Reputation: 12850

I don't think you can have two virtual hosts with the same host name - that doesn't make sense, virtual hosts are for serving different host names, for example, for serving foo.example.com and bar.example.com.

I think what you want is something roughly like this:

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

Upvotes: 2

Related Questions