将所有png请求重定向为Varnish中的jpg请求

时间:2013-07-02 07:02:30

标签: varnish varnish-vcl

我想将所有.png请求重定向到Varnish VCL中的.jpg请求示例:http://example.com/images/boy.png(或.PNG)到Varnish VCL中的http://example.com/images/boy.jpg

1 个答案:

答案 0 :(得分:1)

可能有2例。

一个。客户端重定向[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