首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.AVIF和.WEBP的Nginx规则

.AVIF和.WEBP的Nginx规则
EN

Stack Overflow用户
提问于 2021-11-17 17:00:15
回答 1查看 114关注 0票数 0

我正在使用WordOps脚本设置我的LEMP服务器。它已经有了提供.webp和.avif镜像的规则,我已经在我的网站上生成了.webp和.avif镜像。

问题是边缘浏览器不支持.avif图像,它将显示空白,而不是加载.webp或jpg图像。

其他浏览器,如Chome和Firefox,.avif加载得很好,网站运行速度也很快。

我需要重写Nginx规则,这样当人们使用Edge或Safari打开我的网站时,它会将支持的图像文件加载为.webp或.jpg,而不是.avif。

以下是当前的规则:

代码语言:javascript
复制
# webp rewrite rules for jpg and png images
# try to load alternative image.png.webp before image.png
location /wp-content/uploads {
   location ~ \.(png|jpe?g)$ {
       add_header Vary "Accept-Encoding";
       more_set_headers 'Access-Control-Allow-Origin : *';
       more_set_headers  "Cache-Control : public, no-transform";
       access_log off;
       log_not_found off;
       expires max;
       try_files $uri$webp_suffix $uri$avif_suffix $uri =404;
   }

我发现这里有一个很好的条件,https://vincent.bernat.ch/en/blog/2021-webp-avif-nginx

代码语言:javascript
复制
http {
  map $http_accept $webp_suffix {
    default        "";
    "~image/webp"  ".webp";
  }
  map $http_accept $avif_suffix {
    default        "";
    "~image/avif"  ".avif";
  }
}
server {
  # […]
  location ~ ^/images/.*\.(png|jpe?g)$ {
    add_header Vary Accept;
    try_files $uri$avif_suffix$webp_suffix $uri$avif_suffix $uri$webp_suffix $uri =404;
  }
}

但是,我不能合并规则使其在我的网站上工作。我总是收到Nginx错误。

规则在文件wpcommon-php74.conf中。

EN

回答 1

Stack Overflow用户

发布于 2021-11-17 22:21:38

以下是我几天前在我的一个网站上几次尝试失败后完成的规则:

代码语言:javascript
复制
map $http_accept $check_avif {
    ~image/avif  "$uri.avif";
}

map $http_accept $check_webp {
    ~image/webp  "$uri.webp";
}

server {
    ...
    location ~ \.(png|jpe?g)$ {
        add_header Vary Accept;
        try_files $check_avif $check_webp $uri =404;
    }
}

对于单个图像,我有以下一组文件:

代码语言:javascript
复制
image.jpg
image.jpg.avif
image.jpg.webp
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70008602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档