Использование 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;
}