Re: Неправильный remote addr
Igor Sysoev
igor на sysoev.ru
Сб Авг 21 11:35:35 MSD 2010
On Sat, Aug 21, 2010 at 10:51:33AM +0400, Никита Козлов wrote:
> Так вопрос был вроде не в том почему в $remote_addr нет реального IP
> клиента, а в том почему переменная всегда содержит 78.159.118.162.
>
> Клиентский запрос приходит на 78.159.118.168, а и ожидается, что на
> проксируемый сервер запрос придет с 78.159.118.168, но приходит
> с 78.159.118.162.
Извините, я невнимательно прочитал письмо.
proxy_bind поможет.
> 21 августа 2010 г. 10:39 пользователь Igor Sysoev <igor at sysoev.ru> написал:
>
> > On Sat, Aug 21, 2010 at 10:13:57AM +0400, Никита Козлов wrote:
> >
> > > Нет, если на сетевом интерфейсе более одного IP, то исходящий адрес ОС
> > будет
> > > выбирать по некоторому алгоритму и обычно это самый первый IP на этом
> > > интерфейсе.
> > >
> > > В 0.8.22+ есть proxy_bind, fastcgi_bind и memcached_bind которые
> > позволяют
> > > выставить исходящий IP для проксируемых запросов.
> >
> > Но поставить туда адрес клиента принципиально невозможно.
> >
> > > 21 августа 2010 г. 9:05 пользователь zdm <nginx-forum at nginx.us> написал:
> > >
> > > > Имеется такой конфиг:
> > > >
> > > > #SERVER_1
> > > > server {
> > > > listen 78.159.118.168:81;
> > > > listen 78.159.118.162:81;
> > > > listen 78.159.118.162:80;
> > > >
> > > > location / {
> > > > proxy_pass http://78.159.118.162:8080;
> > > > proxy_set_header X-Real-IP $remote_addr;
> > > > proxy_set_header X-Forwarded-For
> > > > $proxy_add_x_forwarded_for;
> > > > }
> > > > }
> > > >
> > > > #SERVER_2
> > > > server {
> > > > listen 78.159.118.162:8080;
> > > >
> > > > location / {
> > > > fastcgi_pass unix:/tmp/fcgi.sock;
> > > > fastcgi_param QUERY_STRING $query_string;
> > > > fastcgi_param REQUEST_METHOD $request_method;
> > > > fastcgi_param CONTENT_TYPE $content_type;
> > > > fastcgi_param CONTENT_LENGTH $content_length;
> > > > fastcgi_param HTTP_X_REAL_IP $http_x_real_ip;
> > > > fastcgi_param HTTP_X_FORWARDED_FOR
> > > > $proxy_add_x_forwarded_for;
> > > > fastcgi_param PATH_INFO $uri;
> > > > }
> > > > }
> > > >
> > > >
> > > > Клиентские запросы приходят на SERVER_1, он
> > > > проксирует их на SERVER_2, а тот, в свою
> > > > очередь, на FCGI приложение.
> > > > Проблема:
> > > > Значение переменной $remote_addr в конфиге
> > > > SERVER_2 всегда равно 78.159.118.162, не зависимо
> > > > от того, на какой ip пришел клиентский
> > > > запрос на SERVER_1 (на 78.159.118.162 или на
> > > > 78.159.118.168).
> > > > Разве при проксируемый запрос не
> > > > должен отправляться с того-же адреса,
> > > > на который пришел клиентский запрос?
> > > >
> > > > Posted at Nginx Forum:
> > > > http://forum.nginx.org/read.php?21,121999,121999#msg-121999
> > > >
> > > >
> > > > _______________________________________________
> > > > nginx-ru mailing list
> > > > nginx-ru at nginx.org
> > > > http://nginx.org/mailman/listinfo/nginx-ru
> > > >
> >
> > > _______________________________________________
> > > nginx-ru mailing list
> > > nginx-ru at nginx.org
> > > http://nginx.org/mailman/listinfo/nginx-ru
> >
> >
> > --
> > Игорь Сысоев
> > http://sysoev.ru
> >
> > _______________________________________________
> > nginx-ru mailing list
> > nginx-ru at nginx.org
> > http://nginx.org/mailman/listinfo/nginx-ru
> >
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
--
Игорь Сысоев
http://sysoev.ru
Подробная информация о списке рассылки nginx-ru