Исключить псевдоним из прокси-сервера virtualhost

Я следую за конфигурацией виртуального хоста. Желаемый результат:

  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>

2 ответа

Решение

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

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

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

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

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

<Location /.well-known/acme-challenge/>
  RewriteEngine off
  ProxyPass !
</Location>
Другие вопросы по тегам