ipscrub Nginx

Порой, перед сервисом может встать необходимость удаления IP пользователей из логов. Да, ведение логов можно просто отключить, но что делать, когда они нужны, а вот IP адреса пользователей собирать не хочется? Тут на помощь приходит модуль ipscrub для Nginx.

Модуль для каждого IP генерирует свой хеш, который можно использовать, например для анализа логов, при этом сам IP адрес, в логи не записывается. Это достаточно специфический кейс, но вдруг кому-то ещё он окажется полезен.

Установка ipscrub.

Допустим, у нас уже установлен и работает Nginx. Для сборки модуля, нам как обычно потребуется кое-что доустановить.

# yum install git make gcc autoconf wget pcre-devel zlib-devel

Далее, проверяем версию Nginx, которая работает на сервере, и скачиваем её исходники.

# nginx -v
nginx version: nginx/1.13.11
# cd /usr/local/src/
# wget http://nginx.org/download/nginx-1.13.11.tar.gz
# tar xvfz nginx-1.13.11.tar.gz

На Github’е забираем исходники ipscrub:

# cd /usr/local/src/
# git clone https://github.com/masonicboom/ipscrub

И собираем нужный нам модуль:

# cd /usr/local/src/nginx-1.13.11
# ./configure --with-compat --add-dynamic-module=../ipscrub/ipscrub

Копируем модуль в директорию для других модулей Nginx, и подключаем его в основном конфиге веб-сервера:

# cp objs/ngx_ipscrub_module.so /etc/nginx/modules/
# cat /etc/nginx/nginx.conf | grep ngx_ipscrub
load_module modules/ngx_ipscrub_module.so;

Нам остаётся изменить переменную $remote_addr на $remote_addr_ipscrub в параметре log_format.

Сохраняем изменения, убеждаемся что ошибок в конфиге нет (nginx -t), и перезапускаем веб-сервер. Теперь, в логи доступа будет записываться примерно следующее:

ipscrub

Таким образом, с помощью ipscrub мы и не собираем IP пользоватля в лог, и всё равно, можем обработать всю необходимую нам информацию.

@SysadminNotes | https://sysadmin.pm

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *