Есть nginx.x86_64 1:1.14.1-9.0.1.module+el8.0.0+5347+9282027e Основной конфиг по умолчанию. Для веб сервера заведен отдельный файл с конфигом в /etc/nginx/conf.d/ со следующим содержимым:
upstream websrv{
ip_hash;
server 127.0.0.1:8002;
}
server {.
listen 80; server_name wserv.domain;
# Перенаправление на HTTPS
location / { return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl; server_name wserv.domain;
# Путь к сертификату и ключу
ssl_certificate /etc/nginx/ssl/wserv.crt;
ssl_certificate_key /etc/nginx/ssl/wserv.key;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log main;
...
}
С одного IP адреса идет большое количество запросов и хотелось бы access_log с него выделить в отдельный файл. В этом случае основной файл access_log был бы существенно меньше и было бы намного проще его анализировать.
В интернете находил варианты с geo и map, но при одном варианте лог файлы вообще не создаются, в других паралельно записываются в два файла все логи. Прошу подсказать как решить такую задачу.
Прмеры которые пробовал(ip адреса здесь только для примера): В файле /etc/nginx/nginx.conf в блок http
map $remote_addr $log_file {
default "main"; # Для всех остальных IP
10.10.10.17 "group1"; # 10.10.10.17 → access_group1.log
10.10.10.18 "group1"; # 10.10.10.18 → access_group1.log
10.10.10.19 "group2"; # 10.10.10.19 → access_group2.log
}
В файле /etc/nginx/conf.d/wsrv.conf в блок server
# Лог для остальных IP
access_log /var/log/nginx/access.log combined if=$log_file=main;
# Лог для 10.10.10.17 и 10.10.10.18
access_log /var/log/nginx/access_group1.log combined if=$log_file=group1;
# Лог для 10.10.10.19
access_log /var/log/nginx/access_group2.log combined if=$log_file=group2;