【发布时间】:2013-06-29 10:54:57
【问题描述】:
我想将所有 .png 请求重定向到 Varnish VCL 中的 .jpg 请求示例:http://example.com/images/boy.png(或 .PNG)到 Varnish VCL 中的 http://example.com/images/boy.jpg
【问题讨论】:
标签: varnish varnish-vcl
我想将所有 .png 请求重定向到 Varnish VCL 中的 .jpg 请求示例:http://example.com/images/boy.png(或 .PNG)到 Varnish VCL 中的 http://example.com/images/boy.jpg
【问题讨论】:
标签: varnish varnish-vcl
可能有两种情况。
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
【讨论】: