У нас есть проблема на нашем сайте из-за того, что файлы cookie становятся слишком большими. На данный момент мы уже расширили допустимый размер заголовка и снизили размер файлов cookie, но я хотел бы выяснить, каковы средние размеры заголовков клиента, в частности, файлов cookie.
Я создал журнал apache, который фиксирует файлы cookie, устанавливаемые по каждому запросу:
LogFormat "%{Cookie}i" cookies
Но это просто выплевывает все содержимое всех файлов cookie в заголовке.
Есть ли способ, чтобы apache просто регистрировал размер (или просто длину строки) для каждого запроса?
Вместо того, чтобы регистрировать размер файлов cookie, вы можете регистрировать содержимое файлов cookie, длина которых превышает определенную. Примечание. Для этого решения требуется apache 2.4.
Допустим, вы хотите регистрировать файлы cookie выше 8190 байтов (это значение по умолчанию для LimitRequestFieldSize), используйте это в httpd.conf
# Increase LimitRequestFieldSize so it'll let cookies above 8190 pass
LimitRequestFieldSize 12000
# Set an environment variable if the value of the Cookie header
# matches a string with more than 8190 characters
SetEnvIfExpr "req('Cookie') =~ /^.{8190,}$/" COOKIE_ABOVE_LIMIT
# Define a log format that logs the cookie contents
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Host}i\" \"%{Referer}i\" \"%{User-Agent}i\" \"%{Cookie}i\" %{ms}T" log_cookie
# Create a conditional log rule that will log only if the
# the environment variable is set
CustomLog "/var/log/httpd/cookie_above_limit_log" log_cookie env=COOKIE_ABOVE_LIMIT
AFAIK нет :(
Но что вы можете сделать вместо записи непосредственно в файл журнала, так это использовать способность Apache использовать канал и анализировать строки журнала apache перед их записью в файл.
...
LogFormat "%{Cookie}i" cookies
CustomLog "| /usr/local/bin/cookiecutter.awk" cookies
Пример сценария awk может быть приведен ниже:
#! /bin/awk -f
# /usr/local/bin/cookiecutter.awk
{
print length($0) >> "/var/log/apache/cookielength_log"
}
Несколько дополнительных полей, таких как, например, строка идентификации браузера, также могут быть полезны, используйте ваше воображение.