仅当接受标头中存在图像/web时才重定向



所以,我想将我的所有图像请求重定向到另一台服务器,但在执行此操作之前,我想检查请求的accept标头上是否存在image/webp,我计划在其他服务器上进行验证,但我认为最好在nginx中进行,有可能吗?

如果标题不存在,我只想保持原样(为静态图像服务(

这就是我所拥有的:

location ~ .(png|jpg|jpeg)$ {
proxy_pass   ...;
}

您可以使用以下内容:

map $http_accept $local {
~image/webp  '';
default      $uri;
}
server {
...
location ~ .(png|jpe?g)$ {
try_files $local @remote;
}
location @remote {
proxy_pass ...
}
}

但是,如果在本地服务器上找不到请求的文件,则会将请求代理到远程服务器。如果它不适合你,其中一种可能的方法是使用邪恶的if:

location ~ .(png|jpg|jpeg)$ {
if ($http_accept ~ image/webp) {
proxy_pass ...
}
}

这应该适用于现代nginx版本,if在任何情况下都不是邪恶的,但这正是我最好避免它的地方

map $http_accept $locname {
~image/webp  remote;
default      local;
}
server {
...
location ~ .(png|jpe?g)$ {
try_files "" @$locname;
}
location @local {
# serve the file locally
}
location @remote {
proxy_pass ...
}
}

相关内容

  • 没有找到相关文章

最新更新