Назад | Перейти на главную страницу

Различный размер HTTP-ответов с кешем Nginx для UWSGI

Мне нужно настроить кеш для приложения python (django) на nginx. Все работает нормально, но время от времени получаются пустые страницы из кеша. Я не вижу ошибок в журналах nginx и uwsgi. В нормальной ситуации я получаю HTTP/1.1 200 resposne 24615 bytes long из nginx, но иногда имеет длину 20 байт.

HTTP/1.1 200   0.08 secs:   24615 bytes ==> /
HTTP/1.1 200   0.07 secs:   24615 bytes ==> /
HTTP/1.1 200   7.71 secs:   24615 bytes ==> /
HTTP/1.1 200   0.06 secs:      20 bytes ==> /
HTTP/1.1 200   0.06 secs:      20 bytes ==> /
HTTP/1.1 200   0.07 secs:      20 bytes ==> /
HTTP/1.1 200   7.79 secs:   24615 bytes ==> /
HTTP/1.1 200   0.07 secs:   24615 bytes ==> /

Конфигурация моего кеша:

uwsgi_cache_path /var/cache/nginx_cache levels=1:2 keys_zone=my_cache:1m max_size=500m inactive=30m use_temp_path=off;
uwsgi_cache my_cache;
uwsgi_cache_key "$uri";
uwsgi_ignore_headers Cache-Control X-Accel-Expires Expires Vary Set-Cookie;
uwsgi_cache_valid 2s;

А идеи в чем причина этих 20 байтовых ответов?

Похоже, вы кешируете ответ HEAD. Согласно документации nginx (http://nginx.org/en/docs/http/ngx_http_uwsgi_module.html#uwsgi_cache_methods) Метод HEAD всегда добавляется в uwsgi_cache_methods.