Rewrite "=?utf-8?q?=D0=BD=D0=B0?=" GZIP content-encoding.

Roxis roxis at list.ru
Wed Oct 24 17:42:00 MSD 2007


On Wednesday 24 October 2007, Aliaksey Kandratsenka wrote:
> Добрый день, all.
>
> У меня в определенном каталоге есть файлы all.js (хорошо пакуемый
> javascript) и all.js.gz (он же, только пожатый gzip'ом). Я хочу чтобы
> вместо all.js можно было отдавать all.js.gz (с правильным
> content-encoding, разумеется). Мне удалось это сконфигурировать так:
>
>     # переписывать только если клиент готов принимать gzip
>     if ($http_accept_encoding ~* gzip) {
>       rewrite "/javascripts/all.js" "/javascripts/all.js.gz";
>     }
>
>     # если спакованой версии нету переписать назад
>     if (!-f "/opt/phase1/public/javascripts/all.js.gz") {
>       rewrite "/javascripts/all.js.gz" "/javascripts/all.js";
>     }
>
>     location = /javascripts/all.js.gz {
>       # поставить правильные content-{type, encoding}
>       add_header Content-Type text/javascript;
>       add_header Content-Encoding gzip;
>     }
>
> В данном случае очень просится поддержка либо вложенных IF'ов или
> поддержка коньюнкции в IF'ах. Без этого приходится прибегать к
> переписыванию "назад". В связи с этим у меня вопрос. Может ALL знает
> способ сделать это лучше?

у меня такой вариант:

set $gz_cache "true";

if ($http_accept_encoding !~ gzip) {
    set $gz_cache "false";
}

if (!-f "/www/gz/$requst_file") {
    set $gz_cache "false";
}

if ($gz_cache == "true") {
    root "/www/gz";
    add_header Content-Encoding gzip;
}


More information about the nginx-ru mailing list