在Nginx上有条件地提供Webp图像未显示正确的扩展

时间:2019-03-25 01:42:06

标签: nginx webp

我已经设置了一个使用nginx和一些bash脚本来提供webp服务。首先,有一个观察程序脚本,该脚本查找图像文件夹的任何更改并生成webp图像并命名为新图像,即原始文件名+'.webp'扩展名(用于jpg和png)。例如,当我们添加./images/myphoto.jpg时,我的bash脚本将创建一个./images/myphoto.jpg.webp图像。因此,我的图像文件夹中有两组图像,分别是jpg / png图像和webp。

现在我的nginx脚本如下所示。

map $http_accept $webp_extension {
    default "";
    "~*webp" ".webp";
}
....
...
..
location /images {
  autoindex on;
  add_header X-Robots-Tag "noindex, nofollow";
  location ~* ^/images/.+\.(png|jpe?g)$ {
    expires 30d;
    add_header Vary "Accept-Encoding";
    add_header Cache-Control "public, no-transform";
    try_files $uri$webp_extension $uri =404;
  }
}

此脚本可以正常工作,为功能强大的浏览器提供webp图像,为较旧的浏览器提供jpg / png图像。我唯一的问题是,即使webp图像在浏览器上看起来也像jpg / png图像。换句话说,当我们查看源代码时,chrome或firfox会显示myphoto.jpg的webp版本,但显示的是myphoto.jpg而不是myphoto.jpg.webp。

我希望图像以正确的比例显示。 myphoto.jpg.webp。或者我不介意将服务器上的图像* .jpg.webp重命名为* .webp。

我们如何更改nginx以显示正确的扩展范围?而不在nginx上使用IF条件。

0 个答案:

没有答案