Per Документация директивы Apache 2.4 FileETag по умолчанию для расчета ETag используется MTime Size
.
Для Apache версий 2.3.14 и более ранних по умолчанию установлено значение INode MTime Size
.
Настройки ETag для всех портов и проверка вывода Apache ETag
Вы можете проверить сами, используя curl и сравнив значение ETag, возвращаемое в заголовках, со значением inode, возвращаемым ls
.
Например:
curl -I https://example.com/file
где file - это файл в вашей файловой системе, обслуживаемый вашим веб-сервером Apache.
Если ETag установлен на MTime Size
, вы можете увидеть что-то вроде этого:
ETag: "3-24f10051b181e"
Вы можете изменить значения, возвращаемые ETag, используя директиву FileETag
. Добавьте в конец файла Apache сервера conf (например, /etc/httpd/conf/httpd.conf
) следующий файл:
FileETag INode
Перезагрузите или перезапустите Apache, а затем повторите тест скручивания.
В моих тестах включение INET FileETag в конфигурационный файл сервера влияло на вывод на ВСЕ порты, обслуживаемые моим веб-сервером Apache: 80 и 443.
Если для ETag установлено значение INode
, вы должны получить одно шестнадцатеричное число, например:
ETag: "200f8fa"
Преобразовать числа, возвращаемые ETag, из шестнадцатеричного в десятичное и сравнить с номером инода.
Если вы запускаете ls -i /path/to/webroot/example.com/file
, возвращаемый индекс должен быть десятичным эквивалентом шестнадцатеричного числа, возвращенного через ETag (в этом примере 33618170).
Если вы добавили FileETag Inode
, не забудьте удалить его и перезапустить / перезагрузить Apache.
Настройки ETag для определенного порта
Контексты, в которых вы можете использовать FileETag
:
- настройка сервера
- виртуальный хост
- каталог
- .htaccess
Если в конфигурации сервера присутствует FileETag
с ключевыми словами компонента, которые вы хотите, и вы все еще видите неправильный вывод ETag для определенного порта, который обслуживает Apache, вам следует поискать файлы конфигурации vhost и корневые веб-каталоги для FileETag
- как и любые настройки там будут переопределять конфигурацию сервера.
Если вы действительно хотите иметь определенный выход ETag на конкретном порту, вы должны добавить FileETag
в соответствующий блок VirtualHost
для порта, на который вы хотите повлиять. Если вы обслуживаете более одного сайта на этом порту, вам нужно добавить FileETag
к каждому блоку VirtualHost
, который указывает этот порт.