Quantcast
Channel: Nginx Forum - Nginx Mailing List - Russian
Viewing all articles
Browse latest Browse all 3102

Как сделать два вложенных условия в map или if (3 replies)

$
0
0
Добрый день!

Есть server {} общий для http & https

Появилась необходимость для 2 стран сделать его только на https с
обязательным редиректом. Но всех остальных так же обязательно оставить на
http. Так не хочется дублировать этот server {} длинный. А сделать
редиректы внутри одного - истина где-то рядом, но никак не дотянуться...
Попытался сделать как в лучших домах:

http{
map "$scheme:$geoip_country_code" $tossl {
"https:RU" "1";
"https:UA" "1";
"http:RU" "2";
"http:UA" "2";
}}

server{}
if ($tossl = "1") {rewrite ^(.*)$ https://example.com$1 permanent;}

Но вот второе правило должно работать от обратного. Надо заредиректить всех
кто не "2", но внутри одного server{} это так же будет и 1. А как в map
пометить все страны кроме этих двух, но с учетом схемы? Нужна снова
последовательная вложенность if.

Есть известный костыль:

if ( $geoip_country_code !~ "RU|UA") { set $lock1 1; }
if ( $scheme = "https" ) { set $lock2 1; }
set $lock3 "$lock1$lock2";
if ( $lock3 = "11" ) { rewrite ^/(.*)$ http://example.com/$1 last ; }

Но он такой уродский...

--
Best regards,
Anton Kuznetsov.
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Viewing all articles
Browse latest Browse all 3102

Trending Articles