
Есть ли способ обрезать содержимое поля, хранящегося в журнале доступа?
Мне интересно сохранить только первые десять символов User-Agent.
решение1
Сначала вы вводите пользовательскую переменную, которая содержит усеченный пользовательский агент. Для этого вы используете map
директиву для обычной переменной пользовательского агента, $http_user_agent
. Документация по модулю map находится здесь:http://nginx.org/en/docs/http/ngx_http_map_module.html. Затем вы настраиваете формат ведения журнала с помощью log_format
директивы, см. документацию по адресуhttps://docs.nginx.com/nginx/admin-guide/monitoring/logging/. Наконец, вы указываете access_log
использовать ваш собственный формат журнала.
В итоге:
# ...
http {
map $http_user_agent $trunc_agent {
default "";
"~*(?P<tr>.{0,10}).*" $tr;
}
log_format myformat '[other fields] "$trunc_agent"';
access_log [logfile] myformat;
}
# ...