проблема с прозрачным прокси

Igor Sysoev is at rambler-co.ru
Tue Mar 1 23:17:10 MSK 2005


On Tue, 1 Mar 2005, Borisenko Ivan wrote:

> apache с mod_accel можно было поставить на gw, отклонять фаерволом пакеты
> идущие через внешний интерфейс на 127.0.0.1 и прописать
>
> Listen 8100
> <VirtualHost a.b.c.d:80>
> AccelPass           /       http://a.b.c.d:8100/
> </VirtualHost>
> <VirtualHost a.b.c.e:8100>
> AccelPass           /       http://a.b.c.e:8100/
> </VirtualHost>
> где a.b.c.d и a.b.c.e ip машин, стоящих за gw
>
> и все работало, а в nginx
> server {
>        listen a.b.c.d:8100;
>        location / {
> proxy_pass  http://a.b.c.d:8100/;
> 	           }
>    	}
> ...
> естественно не работает:
> 2005/03/01 21:09:40 [emerg] 33856#0: bind() to a.b.c.d:8100 failed (49: Can't 
> assign requested address)
> поскольку адрес a.b.c.d принадлежит другой машине.
>
> Можно как-либо с помощью nginx организовать прозрачный прокси для нескольких
> бэкендов, сидящих на разных физических машинах, но слушающих одни порты?

Можно сделать так:

   server {
        listen   8100;
        listen   a.b.c.d:8100;
        ...
   }

   server {
        listen   a.b.c.e:8100;
        ...
   }

Тогда nginx, как и Апач, будет слушать на *:8100 и не будет пытаться
при'bind()иться к a.b.c.d:8100 и a.b.c.e:8100.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list