Я добавил настройку по умолчанию для кеша на 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 в качестве тома все работает по назначению.