Здравствуйте, Максим.
Вариант использования полного пути в URI выглядит не очень удобно.
Второй вариант с использованием `$realpath_root` работает, но
как сделать так, чтобы генерировался хэш от значения `$realpath_root`,
в противном случае отображается для всех полный путь к файлу, не
думаю, что такой вариант не безопасен:
add_header ETag $realpath_root;
К тому же это надо дополнительно везде прописывать add_header,
пользователь легко может упустить в конфигурации места, где надо
его изменить.
Судя по коду в src/http/ngx_http_core_module.c для генерации ETag
используется только время модификации файла и его размер. А вот
путь до файл не учитывается.
Как можно попробовать добавить возможность учитывать полный путь до
файла для проверки? Может подойдёт такой вариант:
ETag = путь к файлу + размер файла + время модификации файла.
Если подойдёт, тогда всё будет работать автоматически.
Вы писали 25 ноября 2023 г., 3:59:57:
> Hello!
> On Tue, Nov 21, 2023 at 09:53:16PM +0300, izorkin@gmail.com wrote:
> Если размера для идентификации версии файла недостаточно, то
> ожидаемо нужны другие идентификаторы. В классических файловых
> системах таким идентификатором выступает время модификации файла.
> В /nix/store, как я понимаю, идея состоит в том, что время
> модификации не нужно, потому что файлы в рамках конкретного пути
> не меняются. Решением, целиком повторяющим эту идею, будет
> использование полного пути из /nix/store в URI, тогда всё будет
> работать так, как ожидают создатели /nix/store.
> Если же хочется выкинуть из URI полный путь, то наверное имеет
> смысл думать в сторону возможности установки ETag'а из переменных
> (сейчас его можно поменять в ответе клиенту, но это происходит
> после проверок If-Modified-Since / If-None-Match, и выставленное
> значение не используется самим nginx'ом). Тогда можно будет
> поставить и использовать произвольный ETag, основываясь, например,
> на переменной $realpath_root - то есть сделать штатными средствами
> примерно то же, что пытались накостылить авторы соответствующего
> патча в NixOS.
--
С уважением,
Izorkin mailto:izorkin@gmail.com
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-ru