Re: Не работает fastcgi кеширование
Maxim Dounin
mdounin на mdounin.ru
Вт Дек 21 19:25:32 MSK 2010
Hello!
On Tue, Dec 21, 2010 at 04:51:09PM +0159, fenix at intercharge.net wrote:
> Здравствуйте !
>
> nginx version: nginx/0.8.54
>
> Прописан fastcgi cache:
>
> fastcgi_cache_path /opt/nzb_cache levels=1:2 keys_zone=nzbcache:10m inactive=60d max_size=10g;
> fastcgi_temp_path /opt/nzb_cache_tmp;
>
> Прописан fastcgi хост, на котором все по location заварачивается на index.php:
>
> server {
> listen frontend;
>
> server_name www;
>
> access_log logs/access.log upstr;
>
> location ~ \.php$ {
> fastcgi_cache_key $uri$is_args$args;
> fastcgi_cache nzbcache;
>
> fastcgi_cache_valid 200 302 24h;
> fastcgi_cache_min_uses 1;
> fastcgi_ignore_headers "Cache-Control" "Expires";
>
> fastcgi_pass fcgihost:8888;
> fastcgi_index index.php;
>
> include /opt/nginx/conf/fastcgi_params;
>
> fastcgi_param SCRIPT_FILENAME /vhosts/www/htdocs$fastcgi_script_name;
> fastcgi_param DOCUMENT_ROOT /vhosts/www/htdocs;
> }
>
> location / {
> rewrite ^/.* /index.php?q=$1 last;
> }
>
> }
>
> данный хост в ответ на GET запрос, обращается к php-fpm и тот
> отдает ему xml, который и должен быть положен в кеш nginx.
>
> В результате по логу, ни один из ответов не попадает в кеш, постоянно
> MISS, даже при одинаковых повторных запросах (fastcgi_cache_min_uses 1):
> ...
> [21/Dec/2010:15:37:48 +0100] /file/a43348c0-e2c2-8694-9fc0-465e3f889a4d/ "MISS" "0.515"
> [21/Dec/2010:15:37:52 +0100] /file/a2ae833e-8763-82a9-a708-58fe3ed30414/ "MISS" "0.431"
> [21/Dec/2010:15:37:58 +0100] /file/a21c4774-4a65-fe63-e712-077af144d30a/ "MISS" "0.422"
> [21/Dec/2010:15:38:00 +0100] /file/80d766da-c8aa-144c-aea7-3fc559304f76/ "MISS" "0.424"
> [21/Dec/2010:15:38:01 +0100] /file/80d766da-c8aa-144c-aea7-3fc559304f76/ "MISS" "0.419"
> [21/Dec/2010:15:38:11 +0100] /file/80d766da-c8aa-144c-aea7-3fc559304f76/ "MISS" "0.408"
> [21/Dec/2010:15:38:12 +0100] /file/80d766da-c8aa-144c-aea7-3fc559304f76/ "MISS" "0.375"
> ...
>
> На всякий случай запретили php-fpm генерировать заголовки
> "Cache-Control" "Expires", которые выше и так должны игнорироваться.
>
> Также установили мониторинг обращений к самому кешу (каталогу) /opt/nzb_cache на
> предмет создания файлов, каталогов с помощью - inotifywait - кеш не
> неполняется. error.log на предмет ошибок - пустой.
Помимо Cache-Control и Expires - есть ещё всякие другие заголовки,
которые тоже могут запрещать кеширование ответа. В случае php -
наиболее вероятный кандидат Set-Cookie.
А вообще - как делать debug log рассказано тут:
http://nginx.org/en/docs/debugging_log.html
Maxim Dounin
Подробная информация о списке рассылки nginx-ru