На моем веб-сайте я сделал кеширование данных с помощью memcached. В нем хранятся полностью сгенерированные html-страницы. Следующим шагом было получить эти данные из memcached с помощью nginx и отправить обратно пользователю без запуска процесса apache. Сначала я попытался получить данные из кеша с помощью php-бэкэнда, и это сработало. Но когда я пытаюсь сделать это с помощью nginx - я вижу почти не поврежденные данные. что-то вроде http://i.stack.imgur.com/JFGW0.png
я прошу помощи с этой проблемой.
p.s. вот часть конфигурации nginx, если это может помочь
location / {
#add_header Content-Type "text/html";
set $cachable 1;
if ($request_method = POST){
set $cachable 0;
break;
}
if ($http_cookie ~ "beauty_logged") {
set $cachable 0;
break;
}
if ($cachable = 1) {
set $memcached_key 'nginx_$host$uri';
memcached_pass 127.0.0.1:11211;
}
default_type text/html;
error_page 404 502 504 405 = @php;
#proxy_pass http://front_cluster;
}
location @php {
proxy_pass http://front_cluster;
}
Nginx не обрабатывает контент, хранящийся в Memcached, он просто получает его и возвращает в браузер как есть.
Настоящая причина - клиентская библиотека Memcached, которую использует ваше приложение. Большинство библиотек сжимают большие значения (обычно, когда размер значения превышает некоторый порог), поэтому вы должны настроить его так, чтобы это не происходило, или установить memcached_gzip_flag
с участием модуль gunzip включен.