@mirolin12

Нужная помощь в nginx. Как преобразовать if в map?

Доброго времени суток. Есть такая вот конфигурация nginx:
http {
...
map_hash_bucket_size 256;
map $server_name $sites {
     default 0;
     include /etc/nginx/conf/doc/site_list_st.conf;
}
server {
	server_name 111.111.111.111;
	location / {
                set $asc $sites;
                      if ($asc = 10) { директива on;}
                      if ($asc != 10) { директива off;}
}
}

}


Однако возникает проблема.
Требуемая директива работает только в location (в if отказывается работать). Единственный выход который я смог найти в интернете, это заменить if на map. В свою очередь map работает только в http блоке, что и вызывает у меня непонимание.
  • Вопрос задан
  • 1789 просмотров
Решения вопроса 1
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Перед секцией server{} :

map $http_host $somevar {
hostnames; 

host1.com "on";
host2.com "off";
default "off":
}

server {
 .... 
set $your_param $somevar;
}


Если можно во второй части map сразу указать вашу переменную (не все получится) - то set внутри server {} уже не нужен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы