<div dir="ltr"><div><div><div>Добрый день!<br><br></div>Есть server {} общий для http & https<br><br></div>Появилась необходимость для 2 стран сделать его только на https с обязательным редиректом. Но всех остальных так же обязательно оставить на http. Так не хочется дублировать этот server {} длинный. А сделать редиректы внутри одного - истина где-то рядом, но никак не дотянуться...<br>Попытался сделать как в лучших домах:<br><br>http{<br>map "$scheme:$geoip_country_code" $tossl {<br>    "https:RU" "1";<br>    "https:UA" "1";<br>    "http:RU" "2";<br>    "http:UA" "2";<br>}}<br><br></div>server{}<br clear="all"><div><div><div><div>if ($tossl = "1") {rewrite ^(.*)$ <a href="https://example.com">https://example.com</a>$1 permanent;}<br><br></div><div>Но вот второе правило должно работать от обратного. Надо заредиректить всех кто не "2", но внутри одного server{} это так же будет и 1. А как в map пометить все страны кроме этих двух, но с учетом схемы? Нужна снова последовательная вложенность if.<br><br></div><div>Есть известный костыль:<br><br>  if ( $geoip_country_code !~ "RU|UA") { set $lock1 1; }<br>  if ( $scheme = "https" ) { set $lock2 1; }<br>  set $lock3 "$lock1$lock2";<br>  if ( $lock3 = "11" ) { rewrite ^/(.*)$ <a href="http://example.com/$1">http://example.com/$1</a> last ; }<br><br></div><div>Но он такой уродский... <br></div><div><br>-- <br><div class="gmail_signature">Best regards,<br>Anton Kuznetsov.       </div>
</div></div></div></div></div>