Skip to main content

Як в nginx виключити IP з логів?



Уявімо ситуацію: у вас статичний 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 . Для точного збігу потрібно прописати інше регулярний вираз.




Як ви оціните статтю?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (2 оцінок, середнє: 5,00 з 5)
Завантаження ...

Додати коментар

Ваш e-mail не буде опублікований.