У меня возникли проблемы с заменой правила обратного прокси Apache2 для ACL Varnish.
Правило apache:
<Location /MySite>
ProxyPass http://192.168.0.123/OtherSite
</Location>
Мой Varnish ACL:
if (req.url ~ "^/(?i)MySite") {
set req.backend = myhost; # 192.168.0.123
set req.url = regsub(req.url, "^/(?i)MySite", "/OtherSite");
return (pipe);
}
Это приводит к тому, что URL-адрес на стороне клиента меняется на «/ OtherSite», чего я не хочу. В этом сценарии, когда пользователь вводит http://www.myhost.com/MySite, ответ перенаправляет браузер пользователя на http://www.myhost.com/OtherSite. Я хочу, чтобы это «перенаправление» происходило только при запросе серверной части varnish, имеющем такое же поведение, что и ProxyPass Apache.
Как я могу этого добиться?
Спасибо
Пожалуйста, попробуйте это:
sub vcl_recv {
...
if (req.url ~ "(?i)^/MySite") {
set req.backend = myhost;
set req.url = regsub(reg.url, "(?i)^/MySite", "/OtherSite");
}
..
return (lookup);
}
Удачи и получайте удовольствие от Varnish.