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

nginx кеширует тот же файл с версиями

Я добавил настройку по умолчанию для кеша на Nginx. При обычном обновлении я получаю 304, но в папке кеша есть дополнительные файлы с такими версиями, как 02a9299b4f7a308b588544c1a735cc1e.0000000002, 02a9299b4f7a308b588544c1a735cc1e.0000000004 и так далее.

Я предположил, что для одного и того же запроса следует использовать одну и ту же запись в кеше. Но даже по обычному запросу он создает дополнительные файлы. Я пробовал добавить proxy_ignore_headers Cache-Control и proxy_hide_header Cache-Control. Это не помогло.

Как перестать создавать версии?

nginx.conf

http {
    proxy_cache_path /data/nginx/cache levels=2:2 keys_zone=cache_one:256m inactive=2d max_size=16G;
server{
    proxy_cache cache_one;
    proxy_cache_key "$uri";
    proxy_cache_min_uses 5;
    proxy_cache_methods GET HEAD;
    proxy_cache_valid 200 302 100m;
    proxy_cache_valid 404      1m;
    proxy_ignore_headers Cache-Control;
    proxy_hide_header Cache-Control;
    proxy_cache_valid any 30m;
    add_header Cache-Control "max-age=1000000";
}
}

Запрос

GET /path/x16.jpg HTTP/1.1
Host: host:443
Connection: keep-alive
Cache-Control: max-age=0
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.109 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: __cfduid=d739d4158117bf7ef77bf107cd0817c181591547262
If-None-Match: "5ed595d0-2c594"
If-Modified-Since: Mon, 01 Jun 2020 23:57:04 GMT

Проблема заключалась в том, что nginx в докере использует разные uid и gid. Их нельзя изменить на cifs и предохранителях в моей системе. После использования / tmp в качестве тома все работает по назначению.