nginx балансировка

oamakarov nginx-forum at nginx.us
Wed Mar 25 12:41:00 UTC 2015


Добрый день.
Есть задача: запрос идет на сервер, где nginx балансирует в зависимости от
ip адреса. Если ip адрес из списка, то запрос идет дальше на сервер1, если
нет то запрос идет дальше на один из серверов(сервер2,сервер3), которые
между собой балансируются. Как бы это реализовать, друзья?

   ## one backend ##
   upstream apachereadonly  {
     server 10.10.11.10:443; 
     server 10.10.11.11:443;  
     ip_hash; 
   }
   ## two backend ##
  upstream apachereadwrite {
     server 10.10.11.12:443;
 
   }
 
        ## config ##
        location / {
                proxy_set_header        Accept-Encoding   "";
                proxy_set_header        Host              $http_host;
                proxy_set_header        X-Forwarded-By   
$server_addr:$server_port;
                proxy_set_header        X-Forwarded-For   $remote_addr;
                proxy_set_header        X-Forwarded-Proto $scheme;
                proxy_set_header        X-Real-IP         $remote_addr;
                ## default backend
                proxy_pass  https://serverone.com;
                ## send traffic to TWO backend if ip is 1.2.3.4 ##
                if ( $remote_addr ~* 1.2.3.4 ) {
                        proxy_pass https://servertwo.com;
                }
                proxy_next_upstream error timeout invalid_header http_500
http_502 http_503 http_504;
        }
 
Как вместо 1.2.3.4 указать пул адресов?
Правильно ли выглядит конфиг, и то что я хочу получить будет работать по
такой схеме?
Удобнее ли вместо Ip_hash использовать sticky module ?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,257673,257673#msg-257673



Подробная информация о списке рассылки nginx-ru