Я пытаюсь apache обратный прокси для сплайсинга сайтов. Конфигурация apache:
<Proxy balancer://cluster_0_1>
BalancerMember http://xxx.xxx.xxx.xxx:80 route=0 timeout=600 retry=0 connectiontimeout=60 loadfactor=1
ProxySet lbmethod=bybusyness
</Proxy>
ProxyPass /base balancer://cluster_0_1/xy interpolate
ProxyPassReverse /base balancer://cluster_0_1/xy interpolate
Когда я пробую его с URL http://www.testsite.com/base, он возвращает относительный путь /xy/
, который затем сопоставляется с текущим адресным пространством и Конечный URL после перенаправления выглядит как http://www.testsite.com/xy/, который возвращает 404 Not Found
, и это совершенно очевидно, поскольку /xy/
находится вне адресного пространства Прокси.
Насколько я знаю, ProxyPassReverse должен был позаботиться об этом, и возвращенный относительный путь должен был быть /base/
, который в конечном итоге соответствовал бы http://www.testsite.com/base/ и вернул 200 OK
Код состояния, так как этот окончательный URL-адрес будет переведен в http://xxx.xxx.xxx.xxx: 80 / xy / , который является допустимым URL-адресом в моем случае.
Я повторил попытку, изменив конфигурацию apache as:
ProxyPass /base/ balancer://cluster_0_1/xy/ interpolate
ProxyPassReverse /base/ balancer://cluster_0_1/xy/ interpolate
В этом случае, если пользователь вводит URL-адрес как http://www.testsite.com/base и забывает поставить конечный sla sh '/', он возвращает 404 Not Found
.
Есть ли способ обработки в конфигурации apache?