Welcome! Log In Create A New Profile

Advanced

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

Илья Шипицин
August 02, 2011 12:44PM
Добрый день!

нужен критический взгляд на наш подход к написанию конфигов.
задача такая, скажем, 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@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

Илья Шипицин August 02, 2011 12:44PM

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

Denis F. Latypoff August 03, 2011 12:04AM

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

Илья Шипицин August 03, 2011 04:34AM

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

Denis F. Latypoff August 03, 2011 12:24PM

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

Gena Makhomed August 03, 2011 06:46AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 325
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready