Возможно ли, чтобы сервер Apache динамически проксировал все запросы, определенные в подкаталоге? Типа:
https://proxy.example.com/host1 -> https://host1.example.com
https://proxy.example.com/host2 -> https://host2.example.com
https://proxy.example.com/host3/dir1 -> https://host3.example.com/dir1
Бонус:
https://proxy.example.com/host4:8000 -> https://host4.example.com:8000
https://proxy.example.com/host5:8080/dir2 -> https://host5.example.com:8080/dir2
Мои знания, кхм, ограничены. Можно ли расширить следующий пример?
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST} [P]
SSLEngine on
SSLProxyEngine On
ProxyRequests Off
ProxyPass / https://$1/
ProxyPassReverse / https://$1/
ProxyPreserveHost On
С уважением
Вы можете использовать директиву ProxyPassMatch
следующим образом:
ProxyPassMatch /([^/]*)/(.*)$ https://$1.example.com/$2
Однако вы получите частичные результаты.
Прокси-часть будет работать, однако путь к файлам cookie будет другим: поскольку вы запрашиваете /host1
, а внутренний сервер устанавливает для файлов cookie значение /
, это может привести к проблемам. . Кроме того, перенаправления не обрабатываются должным образом: если целевой хост перенаправляет на абсолютный URL-адрес, например. устанавливает себе заголовок Location: http://...
, тогда прокси не будет перезаписывать этот заголовок, заставляя браузер переходить по прямой ссылке.
Существует решение как для проблем с файлами cookie, так и для перенаправления с помощью директив ProxyPassReverse
, ProxyPassReverseCookieDomain
и ProxyPassReverseCookiePath
, но, насколько мне известно, ни одна из них они поддерживают регулярное выражение или любые динамические сопоставления. Конечно, вы можете указать их по одному, но это делает всю идею динамического проксирования бессмысленной.