I've following virtual host configuration. The desired result is:
- If someone requests http://test.myserver.com/myapp, apache serves him from /var/www/myapp
- And if http://test.myserver.com/ is requested, apache redirects it to port 8069.
2nd is working but 1st is not. Can someone help please!
<VirtualHost *:80>
ServerName test.myserver.com
Alias /myapp /var/www/myapp
<Directory /var/www/myapp>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ProxyPass / http://localhost:8069/
ProxyPassReverse / http://localhost:8069/
</VirtualHost>
This is how I was able to achive the desired outcome. Following is the working configuration where ProxyPassMatch ^/myapp !
did the trick and except the (server-address)/myapp, all the requests are being proxying to the other server which is open-erp running at port 8069:
<VirtualHost *:80>
ServerName test.myserver.com
Alias /myapp /var/www/myapp
<Directory /var/www/myapp>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ProxyPassMatch ^/myapp !
ProxyPass / http://localhost:8069/
ProxyPassReverse / http://localhost:8069/
CustomLog /var/log/apache2/access.log common
ErrorLog /var/log/apache2/error.log
</VirtualHost>
Instead of using:ProxyPassMatch ^/myapp !
you could have simply added another ProxyPass directive before the one defining /, like this:
ProxyPass /myapp !
ProxyPass / http://localhost:8069/
Since ProxyPass respects precedence (the first match will be processed), it will correctly redirect to the directory instead of proxying.
来源:https://stackoverflow.com/questions/26848945/exclude-an-alias-from-virtualhost-proxypass