Исключить псевдоним из прокси-сервера virtualhost
Я следую за конфигурацией виртуального хоста. Желаемый результат:
- Если кто-то запрашивает 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>
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>