Acabei de ter (e consertei) esse mesmo problema e acabei tentando encontrar a resposta. A documentação do nginx ( link ), não afirma claramente que o * * funciona apenas dentro de uma declaração if, mas aparentemente, esse é o caso.
Para obter correspondência de expressão regular sem distinção entre maiúsculas e minúsculas para uma URL ngnix reescrita fora de uma instrução if, tive que usar o estilo Apache / Perl:
rewrite "(?i)foobar" http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
Veja o link (procure insensível). Também parece que o prefixo (? I) fora de um grupo de captura específico o faz aplicar a toda a cadeia de pesquisa. Nota: Isto parece não funcionar com "^ (? I) foobar" porque parece que o "^" está implícito.
Só para ter certeza, porém, e para facilitar futuras manobras de redigir e menos ambíguas se você acabar fazendo um monte delas, você pode querer fazer algo assim:
location /foobar {
rewrite "(?i)" http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
}
Espero que isso ajude ...