ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

$http Accept-Encoding превращается в $http Accept


  • To: nginx-ru@xxxxxxxxx
  • Subject: $http Accept-Encoding превращается в $http Accept
  • From: "nikolayb" <nginx-forum@xxxxxxxx>
  • Date: Tue, 06 Dec 2011 08:11:08 -0500
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mickey.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=bs1XqTmfbRPJGvQHTVmTCpEYdG09xjmJLVDeH/551u4=; b=UW7tq2BbYxebQu/07XQqEM4J7xjAim71OhAizQNhajOhdWpmjAnIURONOFR7pmpzeuNlZbqlX/KMQiDyos9SM5yK9oxK0ijyjYM/ya/jjOkx07e0rklN9UPBOjhv/8tG;

Здравствуйте, господа!

Я изучаю nginx и пробую настроить
кэширование бэкенда на Amiro.CMS. Среди
прочих проблем столкнулся с
кэшированием gzip-контента и отдачей его
клиенту не поддерживающему сжатие.

В топике
http://forum.nginx.org/read.php?21,158471,158471#msg-158471 было
предложено (1) добавить в ключ кэша
$http_Accept-Encoding, Сысоев предложил
отключить вовсе gzip на бэкенде и
оставить на совесть nginx (2).

1. При попытке добавить переменную в
ключ, nginx решил что $http_Accept-Encoding есть
$http_Accept плюс строка "-Encoding".
Я попробовал создать дополнительную
переменную, но nginx показал стойкость и
также представил $http_Accept-Encoding как
$http_Accept.

кусок конфига:
        set $ae                 "$http_Accept-Encoding";
        proxy_cache_key         "BASE
$request_method|$http_if_modified_since|$http_if_none_match|$ae|$host|$uri$is_args$args";

кусок кэша для Firefox (с gzip):
KEY: BASE
GET|||text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8-Encoding|www.site.ru|/katalog/products/aksessuary

кусок кэша для curl (без gzip)
KEY: BASE GET|||*/*-Encoding|www.site.ru|/katalog/products/aksessuary

Т.е. ключ разделил на два случая
Accept-Encoding за счет разного заголовка.
Плохо то, что может придти клиент с
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
и отключенным gzip, а nginx по ключу отдаст
gzip-содержимое кэша.

2. Если отключить gzip на бэкенде удалив
заголовок с помощью proxy_set_header Accept-Encoding
"", то в кэш будут падать страницы
полновесные, и это существенно
увеличит размер кэша, плюс nginx будет
постоянно занят gzipованием попавших в
кэш страниц для отдачи клиентам с
поддержкой кэширования.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,219698,219698#msg-219698

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.