Welcome! Log In Create A New Profile

Advanced

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

Anton Kuznetsov
October 05, 2015 07:42AM
Добрый день!

Есть 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
Subject Author Posted

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

Anton Kuznetsov October 05, 2015 07:42AM

Re: Как сделать два вложенных условия в map или if

Ekaterina Kukushkina October 05, 2015 05:02PM

Re: Как сделать два вложенных условия в map или if

sejo412 October 06, 2015 07:22PM

Re: Как сделать два вложенных условия в map или if

Dmitry Ivanov October 06, 2015 11:42PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 152
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready