Использование If - плохая практика, старайтесь избегать и использовать map.
Смотрите "If is evil":
https://www.nginx.com/resources/wiki/start/topics/...
Ошибки конфигурирования nginx (или как правильно писать рерайты):
habrahabr.ru/post/74135
map $http_cookie $redirect1 {
default 0;
"~*qa_session" 1;
}
map $request_method $redirect2 {
default 0;
POST 1;
}
location ~^/([0-9]*)/(.*)$ {
set $cache_file $1;
set $redirect 0;
if ( "$redirect1$redirect2" ) {
return 412;
error_page 412 = @goapach;
}
types {}
default_type text/html;
try_files /qa-plugin/cache-master/cache/$cache_file @goapach;
}