Apache ProxyPassReverse возвращает относительный путь к собственному адресному пространству - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь 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?

...