Welcome! Log In Create A New Profile

Advanced

Re: Настройка proxy cache + gzip

Maxim Dounin
November 28, 2012 06:24AM
Hello!

On Wed, Nov 28, 2012 at 04:23:12AM -0500, SenatoR wrote:

> Добрые сутки!
>
> Образил уже весь рунет, но либо такая проблема есть только у меня, либо всем
> на нее пофиг. Допустим, у нас есть proxy_cache или fastcgi_cache. Заставим
> его закешировать тестовую страницу, для чего зайдем на нее из браузера,
> поддерживающего сжатие gzip. В кеше на диске видно, что страница сжата и
> присутствуют соответствующие этому заголовки.
>
> А теперь зайдем на ту же страницу браузером без поддержки gzip (хоть тот же
> wget). Страница отдается из кеша, кодированной (!!!), вместо текста -
> кракозябры.
>
> Временно я решил эту проблему вот так:
>
> if ($http_user_agent ~ "MSIE [4-6]\.|Safari|Konqueror") {
> # В этих браузерах имеются баги при обработке gzip-сжатых файлов с
> длинными URL-ами.
> set $no_gzip 1;
> }
>
> if ($http_accept_encoding !~ "gzip") {
> set $no_gzip 1;
> }
>
> proxy_cache my_cache;
>
> proxy_cache_key
> "$no_gzip|$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
>
> Но сами понимаете, обидно кешировать 2 одинаковые страницы. Что делать и как
> быть? gzip_disable не помогает.

Есть два способа кешировать только один вариант страницы:

1) Кешировать не сжатую страницу. Для этого можно либо отключить
сжатие на бекенде, либо сделать

proxy_set_header Accept-Encoding "";

Как-то так обычно у всех и работает.

2) Кешировать сжатую страницу. Для этого нужно, наоборот,
включить сжатие, и принудительно выставить Accept-Encoding так,
чтобы бекенд жал ответы, и обеспечить расжатие ответов для
клиентов, которые gzip не поддерживают:

gunzip on;
proxy_set_header Accept-Encoding "gzip";

Для этого необходим модуль gunzip (в 1.3.x присутствует в коробке,
http://nginx.org/r/gunzip, для более старых версий - при желании
собирается как сторонний).

--
Maxim Dounin
http://nginx.com/support.html

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Re: Настройка proxy cache + gzip

Maxim Dounin November 28, 2012 06:24AM

Re: Настройка proxy cache + gzip

SenatoR November 28, 2012 01:11PM

Re: Настройка proxy cache + gzip

Anton Yuzhaninov November 28, 2012 01:18PM

Re: Настройка proxy cache + gzip

SenatoR November 28, 2012 01:43PM

Re: Настройка proxy cache + gzip

Валентин Бартенев November 28, 2012 02:38PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 107
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready