Патч ETags в NixOS
Maxim Dounin
mdounin на mdounin.ru
Пн Ноя 20 02:57:08 UTC 2023
Hello!
On Sun, Nov 19, 2023 at 04:15:42PM +0300, izorkin на gmail.com wrote:
> Здравствуйте.
>
> В NixOS используется патч ETags для корректного определения изменения
> файла, расположенного в папке /nix/store. В этой папке все файлы имеют
> временную метку установленную в 0. Поэтому без использования этого
> патча файлы в кэше перестают обновляться. Возможно ли добавить этот
> патч в Upstream?
> Подробнее:
> https://github.com/NixOS/nixpkgs/blob/master/doc/packages/nginx.section.md
>
> Либо добавить дополнительный параметр, в котором можно указать папки
> для которых используется только механизм ETags.
Если я правильно понимаю, речь про вот этот патч:
https://github.com/NixOS/nixpkgs/blob/nixos-23.05/pkgs/servers/http/nginx/nix-etag-1.15.4.patch
Патч выглядит, скажем так, непригодным для включения куда-либо.
Если для задачи достаточно не выдавать пользователю Last-Modified,
а выдавать только ETag (этого, вероятно, будет достаточно как
минимум если в URI виден полный путь из /nix/store, включающий
hash, а также в остальных случаях, если на размер можно полагаться для
идентификации файлов), то просто убрать Last-Modified из ответов
можно стандартным механизмом add_header
(http://nginx.org/r/add_header):
add_header Last-Modified "";
Соответственно у ответов будет только ETag, сформированный
nginx'ом из даты модификации файла (0 в случае /nix/store) и
размера файла.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru