Патч 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