Exclude an alias from virtualhost proxypass

对着背影说爱祢 提交于 2019-11-27 11:47:41

问题


I've following virtual host configuration. The desired result is:

  1. If someone requests http://test.myserver.com/myapp, apache serves him from /var/www/myapp
  2. 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>

回答1:


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>



回答2:


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.




回答3:


in case you have a RewriteCond (which is very likely when you run a proxy) this one will make you happy as well!

<Location /.well-known/acme-challenge/>
  RewriteEngine off
  ProxyPass !
</Location>


来源:https://stackoverflow.com/questions/26848945/exclude-an-alias-from-virtualhost-proxypass

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!