Уявімо ситуацію: у вас статичний ip і ви багато і довго займаєтеся редагуванням сайту. При цьому, вам ще потрібно моніторити, періодично, логи на наявність помилок в запитах, або на скани вразливостей. А наявність великої кількість записів з вашим IP ускладнює перегляд логів.
За допомогою умовної записи, яка доступна в nginx, починаючи з версії 1.7.0, ми можемо перевіряти ip відвідувача і не записувати його в лог-файли. Дійсно, навіщо це робити, якщо в логгірованіі свого айпі немає необхідності?
Щоб додати такий виняток, потрібно створити умовну запис на основі map_module . Результат обчислення умовної записі не буде записуватися в лог, якщо буде дорівнює 0. Правило буде виглядати так:
map $ remote_addr $ loggable { "127.0.0.1" 0; ":: 1" 0; default 1; }
Тобто, по-замовчуванню результат дорівнює 1, а для зазначених ip - 0, і вони не будуть записані в лог. Підтримуються версії протоколу 4 і 6. Зверніть увагу, тут перша змінна - це адреса підключився клієнта. А другу змінну потрібно записати в параметрах access балки.
access_log /var/log/nginx/access.log combined if = $ loggable;
Блок map можна прописати як на рівні http
конфіга nginx, так і на рівні server
.
Виняток інших даних з логів
Відключення логгірованія конкретних ip - це тільки один приклад з безлічі. Можна використовувати різні змінні з стандартних .
Давайте відключимо, як приклад, запис в лог сторінки error.html. Для цього створимо такий блок:
map $ request_uri $ loggable { ~ * Error.html 0; default 1; }
І пропишемо, як вище, параметр if як аргумент для параметра access_log. Після перезапуску nginx всі запити error.html НЕ будуть записані. Включаючи варіації типу error.html?q=search
. Для точного збігу потрібно прописати інше регулярний вираз.