当前位置: 首页>>技术教程>>正文


linux – 从virtualhost proxypass排除别名

, , , ,

问题描述

我一直在关注虚拟主机配置。理想的结果是:

  1. 如果有人请求http://test.myserver.com/myapp,则apache通过/var /www /myapp为他服务

  2. 如果请求了http://test.myserver.com/,则apache会将其重定向到端口8069。

2号正在工作,但1号却没有。有人可以帮忙吗!

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

最佳思路

这就是我能够达到预期结果的方式。以下是ProxyPassMatch ^/myapp !发挥作用的工作配置,除了(server-address)/myapp外,所有请求都正在代理到另一台服务器,该服务器是在端口8069运行的open-erp:

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

次佳思路

不用使用:ProxyPassMatch ^/myapp !,您只需在定义/的前面添加另一个ProxyPass指令,如下所示:

ProxyPass /myapp !
ProxyPass / http://localhost:8069/

由于ProxyPass遵循优先级(将处理第一个匹配项),因此它将正确地重定向到目录而不是代理。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10490.html,未经允许,请勿转载。