Исключить псевдоним из 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>

Ответ 1

Вот как я смог достичь желаемого результата. Ниже приведена рабочая конфигурация, где ProxyPassMatch ^/myapp ! сделал трюк и за исключением (server-address)/myapp, все запросы проксируются на другой сервер, который работает open-erp на порту 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

Вместо использования: ProxyPassMatch ^/myapp ! вы могли бы просто добавить еще одну директиву ProxyPass до той, которая определяет /, например:

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

Поскольку ProxyPass уважает приоритет (первое совпадение будет обработано), оно будет правильно перенаправляться в каталог вместо проксирования.

Ответ 3

в случае, если у вас есть RewriteCond (что весьма вероятно при запуске прокси-сервера), этот также вас порадует!

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