Исключить псевдоним из virtualhost proxypass
Я следую конфигурации виртуального хоста. Желаемый результат:
- Если кто-то запрашивает http://test.myserver.com/myapp, apache обслуживает его из /var/www/myapp
- И если запрашивается 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>