Мне нужно настроить кеш для приложения 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.