LINUX.ORG.RU
решено ФорумAdmin

Настройка сети lxd

 , , , ,


2

1

Сейчас:

1. Работает хост под управлением ubuntu.
2. Внутри хоста работают два lxc контейнера.
3. Хост принимает запрос, и nginx проксирует его в первый или второй контейнер.
4. Контейнеры работают за натом 10.0.0.1, и имеют адреса 10.0.0.х.
5. Хост имеет один белый ip.

Проблема:
Приложения в контейнерах не видят реального ip посетителя.

Вопрос:
Подскажите пожалуйста. Пните на путь. Как можно исправить, чтобы приложения видели реальный ip посетителей? Спасибо.

nginx проксирует его в первый или второй контейнер.

Укажи X-Real-IP.

Что в контейнерах в качестве веб сервера? Если nginx, то в nginx на контейнерах:

set_real_ip_from  10.0.0.1;
real_ip_header    X-Forwarded-For;

В nginx на хосте:

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;

google://http_realip_module

Tanger ★★★★★ ()
Ответ на: комментарий от Tanger

Спасибо добрый человек.

На хосте и в контейнерах nginx. Сейчас попробую.

SergeyF ()
Ответ на: комментарий от Tanger

Спасибо большое! Работает! Да прибудет с тебой успех, здоровье, деньги и женщины!

Но есть проблема. Одно приложение работает с varnish cache. Цепочка такая Nginx(host) ---> varnish cache (lxc) ---> Nginx(lxc).

Если без varnish cache то работает. С varnish cache не работает.

SergeyF ()
Ответ на: комментарий от Tanger

Нет. Такой фокус не проходит )))
Это надо ковырять: /etc/varnish/default.vcl
Информация в гугле есть. Надо разбираться. Спасибо тебе за помощь =)

SergeyF ()
Ответ на: комментарий от SergeyF

А что в заголовке приходит? Можно для дебага так вывести:

location = /test {
 return 200 $http_x_forwarded_for; }
и зайти с внешнего адреса на /test.

Насколько я понимаю, varnish по умолчанию добавляет значение в x-forwarded-for.

Может ты не тот ip указал? Что выводится в access log?

Tanger ★★★★★ ()
Ответ на: комментарий от Tanger

ip указан корректно.
Очевидно, что не добавляет по умолчанию x-forwarded-for
В access log выводятся GET запросы из 10.0.0.1 и 10.0.0.2
Это 100% /etc/varnish/default.vcl
Буду гуглить =)

SergeyF ()
Ответ на: комментарий от SergeyF

РЕШЕНО!

На хосте:

location / {
        #Прокси на Varnish
        proxy_pass      http://10.0.0.2:6081/;

        proxy_set_header    Host              $host;
        proxy_set_header    X-Real-IP         $remote_addr;
        proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto https;
        proxy_set_header    X-Forwarded-Port  443;
        }

В контейнере:
server {
     listen 10.0.0.3:8080;
     server_name lor.com;
     access_log /var/log/nginx/lor.access_log;
     error_log /var/log/nginx/lor.error_log info;
     set $MAGE_ROOT /home/user/lor.com/;
     include /home/user/lor.com/nginx.conf.sample;
     set_real_ip_from  10.0.0.2;
     #real_ip_header    X-Forwarded-For;
}

Проблема была в параметре:
real_ip_header    X-Forwarded-For;

После выключения параметра, все заработало. Править /etc/varnish/default.vcl, нет необходимости.

Спасибо Tanger! =)

SergeyF ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.