问题描述
我当前正在尝试使Nginx在请求的浏览器接受时用(预编译的)brotli文件响应。 (接受编码包含“ br”)。
文件的压缩版本位于同一文件夹中,但具有附加扩展名'.br'。
所以根据https://blog.keul.it/webperf-reduce-bundle-size-with-static-brotli-compression/,我当前的解决方案是:
set $extension "";
set $rewritten false;
if ($http_accept_encoding ~ br) {
set $extension ".br";
}
if (-f $request_filename$extension) {
set $rewritten true;
rewrite (.*) $1$extension break;
}
location ~\/assets\/(.*\.js.br)$ {
alias /var/app/current/public/assets;
gzip off;
add_header Content-Type "application/javascript";
add_header content-encoding br;
add_header vary content-encoding;
}
location /assets {
add_header Dbg-Extension $extension;
add_header Dbg-Rewritten $rewritten;
add_header Dbg-Filename $request_filename$extension;
alias /var/app/current/public/assets;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
但是Nginx似乎从来没有将 if(-f ...)指令评估为true,因此每次都回落到第二个location指令。
我添加了一些额外的调试头(不知道如何更好地调试它),并且 Dbg-Extension 显示了正确的扩展名(“ .br”), Dbg-Filename 显示了brotli文件的正确路径(已通过复制/粘贴检查),但 Dbg-重写永远不会正确。
我不明白!有谁知道缺失了什么?
甚至是完全不同的方法来实现这一目标?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)