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