Использование NginX за балансировщиком нагрузки и правильные ip адреса в логах

Thank you for reading this post, don't forget to subscribe!

Если у Вас на сер­ве­ре уста­нов­лен Varnish + NginX, то в логах NginX все посе­ти­те­ли будут с одним ip адре­сом - 127.0.0.1. Есть два варианта:

  1. Изме­нить фор­мат веде­ния логов
  2. Заста­вить NginX сра­зу обра­ба­ты­вать пра­виль­ный ip адрес

1 Для того что бы исполь­зо­вать зна­че­ние X-Forwarded-For вме­сто $remote_addr в логах, вне­си­те сле­ду­ю­щие изме­не­ния в файл /etc/nginx/nginx.conf:

[codesyntax lang="php"]

[/codesyntax]

Даль­ше ука­жи­те фор­мат для стан­дарт­но­го лог-фай­ла доступа:


 

2. Для нача­ла нуж­но заста­вить Varnish отправ­лять этот ip адрес бэк­эн­ду. Для это­го добавь­те сле­ду­ю­щие стро­ки в сек­цию vcl_recv:

[codesyntax lang="php"]

[/codesyntax]

На самом деле мож­но огра­ни­чить­ся только:

Теперь удо­сто­вер­тесь, что realip вклю­чен в вашем NginX:

Если все ОК, добавь­те сле­ду­ю­щие стро­ки в файл настрой­ки NginX (/etc/nginx/nginx.conf) в сек­цию http:

Про­ве­ря­ем конфиг:

Пере­за­пус­ка­ем Varnish и NginX: