我最近切换到 nginx 并且对它还很陌生,所以如果之前已经广泛介绍过,请原谅我。
我试图做的是根据发出的接受标头重写用户请求。
特别是:如果 accpet 标头是 image/gif 或 image/webp 则提供图像,如果不是连接 .gif 并提供该 url。
听到我的 apache 配置,但我现在再次使用 nginx 并尝试学习如何将其转换:
RewriteCond %{HTTP_ACCEPT} ^image/gif [NC]
RewriteCond %{HTTP_ACCEPT} ^image/webp [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com(.*)$ [NC]
RewriteRule ^i/(.*)\.gif http://example.com/i/$1 [R=302,L]
正如你所看到的,上面的 htaccess 文件就像一个魅力,但 nginx 看起来完全不同。
我做了一些阅读并想出了这个:
map $http_accept $webp_suffix {
default "";
"~*webp" ".webp";
}
在服务器块内包含以下内容
location ~* ^/i/.+\.(gif)$ {
root /storage-pool/example.com/public;
add_header Vary Accept;
try_files $uri$webp_suffix $uri =404;
}
可悲的是,这不起作用,我仍然不知道如何在 nginx 中进行故障排除。
任何信息将不胜感激,谢谢。