ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

нужен совет по if-конструкц иям


  • To: nginx-ru@xxxxxxxxx
  • Subject: нужен совет по if-конструкц иям
  • From: Илья Шипицин <chipitsine@xxxxxxxxx>
  • Date: Tue, 2 Aug 2011 22:43:23 +0600
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=NFkbBHa2+fQxNKyC0U/nd4zFu0l/aHQptXnJT3bO+U0=; b=MCI/bPqla6O1jLExZF+wjU7L0s5VSIxSpoj/FR9UXzqXIl0u2znMQEnYs9JL8A4IXV RuMJmMDjuvHEG6r6jVEdticv5Jbh21zzyqk6NZM0e+gtFeeHR21opCWZWMR2DxWOUZZf /ZJTekojcFkY8lCWjacqf/IP2LyRsgNC/iI/E=

Добрый день!

нужен критический взгляд на наш подход к написанию конфигов.
задача такая, скажем, nginx балансирует группу сайтов.
соотвественно на профилактику можно закрыть, как отдельный сайт, так
всю группу.
людям, которые выполняют профилактику, нужен backdoor, чтобы смотреть,
как всё получилось, до того, как открыть сайты обратно.
сайты https, строго по паролю, в поисковых системах мы не
присутствуем, поэтому на время профилактики нам неважно, с 503-м кодом
мы ее отдаем или с 200-м.
сайты все однотипные.

логика простая - если профилактика, то показываем статику (через SSI
берем время окончания работ из переменной), если надо пройти насквозь,
то идем на /goahead, ловим куку и второй раз по куке проходим, если не
профилактика, то проксируем на $upstream

конфиг написан на if-ах и include-ах, хочется понять, является ли он
оптимальным (голова заточена на if-ы, сложно переключаться на
location/map подход). есть подозрение, что можно переписать более
оптиаально, чем на куче if-ов. нужен мастер-класс

общий конфиг (nginx.conf):

   # site1
    #
    server {
        listen       x.x.x.x:6116;
    set  $upstream site1_upstream;

    access_log  /var/log/nginx/test.access.log;
    error_log  /var/log/nginx/test.error.log;

     set $single_out_of_order "no";
     #set $single_out_of_order "05:00";

    include site-include;

}


<много таких конфигов, в каждом из которых задается переменная
$upstream и $single_out_of_order>

файл site-include (проверяем переменные $single_out_of_order,
$total_out_of_order, если переменные не равны "no", то отображаем SSI
статическую заглушку, выставляем "проходную" куку на /goahead):

    include ssl-include;

     set $total_out_of_order "no";
     #set $total_out_of_order "22:35";

    proxy_next_upstream error;

    add_header X-Nginx-Server $hostname;
    add_header X-BackEnd-Server $upstream_addr;
    add_header X-RemoteAddr $remote_addr;

error_page 502 503 504 500 /502/index.html;
location /502 {
   alias /var/www/xxx.xxx.xxx/502;
}

       location /go {
          add_header Set-Cookie "goahead=1;";
          rewrite ^  https://$upstream/ permanent;
        }

        location / {

            if ($http_cookie ~* "goahead") {
              proxy_pass http://$upstream;
              break;
            }

            if ($single_out_of_order !~ "no" ) {
                    set $total_out_of_order $single_out_of_order;
                    break;
                    error_page 404 /index.html;
                    root /var/www/xxx.xxx.xxx;
                    ssi on;
            }

            if ($total_out_of_order ~ "no" ) {
                     proxy_pass http://$upstream;
            }

            if ($total_out_of_order !~ "no" ) {
                    break;
                    error_page 404 /index.html;
                    root /var/www/xxx.xxx.xxx;
                    ssi on;

            }

            proxy_cache off;
            proxy_connect_timeout 15;
            proxy_send_timeout 500;
            proxy_read_timeout 500;


 }





Илья Шипицин
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.