Перенаправить все запросы png как запросы jpg в Varnish

Я хочу перенаправить все.png запросы на.jpg запросы в Varnish VCL Пример: http://example.com/images/boy.png (или.PNG) на http://example.com/images/boy.jpg в Лак VCL

1 ответ

Решение

Там может быть 2 случая.

A. Перенаправление клиента [1], используйте это в случае, если вы хотите сообщить браузеру клиента, что изображение было перемещено:

sub vcl_recv {
  # ...
  if (req.url ~ "(?i)\.png$") {
    error 750 "http://" + req.host + regsub(req.url, "(?i)\.png$", ".jpg$");
  }
  # ...
}

sub vcl_error {
  # ...
  if (obj.status == 750) {
    set obj.http.Location = obj.response;
    set obj.status = 302;
    return(deliver);
  }
  # ...
}

B. Перезапись на стороне сервера [2], используйте это в случае, если вы хотите внутренне изменить запрос, не сообщая клиенту:

sub vcl_recv {
  # ...
  if (req.url ~ "(?i)\.png$") {
    set req.url = regsub(req.url, "(?i)\.png$", ".jpg$");
  }
  # ...
}

PD: Пожалуйста, не дублируйте ваши вопросы

[1] https://www.varnish-cache.org/trac/wiki/VCLExampleRedirectInVCL

[2] https://www.varnish-cache.org/trac/wiki/RedirectsAndRewrites

Другие вопросы по тегам