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 не будзе апублікаваны.