Debian.pro

Блог для пользователей и администраторов Debian


nginx-frontend + nginx-backend и потерявшиеся реальные IP посетителей.

Из-за подготовки к курсам почти нет времени писать большие статьи. Ну что ж, воспользуемся моментом и начнем писать маленькие статьи, коих накопилось уже достаточно много.

Сегодня мы поговорим о связке nginx+nginx. Те, кто впервые настраивает такую связку наверняка столкнулись с тем, что nginx-backend пишет в лог (и отдает в PHP/Django и прочее, соответственно) IP фронт-энда. Если в апаче это решалось при помощи mod_rpaf, то в nginx’e всё намного проще.

В секцию http {} или в секцию нужного server {} (если вы упрямы — то можете даже в location {} вписать) пишем следующие строки:
set_real_ip_from 8.8.8.8;
real_ip_header X-Real-IP;

Либо:
set_real_ip_from 192.168.0.0/24;
real_ip_header X-Real-IP;

В директиве set_real_ip_from мы указываем серверы, которым мы доверяем тяжкую ношу по передаче нам IP адресов посетителей (если тут указать чужие серверы — то эти самые чужие серверы смогут вас очень красиво и весело dos-ить с адресов вида 0.0.0.1, например).

Директивой real_ip_header мы указываем откуда брать IP. В данном примере нужно на фронте написать proxy_set_header X-Real-IP $remote_addr; в proxy_pass.


Комментарии (2):

  1. kn1ght :

    nginx-frontend + (nginx-backend+)
    я правильно понял что это балансировка на несколько серверов?

  2. Иногда — балансировка, чаще такое случается при перевозе сайтов с сервера на сервер.

Написать комментарий