But the q parameter is empty on redirection.
Eu não vejo esse problema. Quando eu testo a configuração como escrita, ela cria um loop de redirecionamento porque o keywords='value' original é anexado ao URI reconfigurado.
Você pode impedir que rewrite inclua qualquer parâmetro original acrescentando ? ao URI reconfigurado.
Por exemplo:
rewrite ^ /search?q=$arg_keywords? permanent;
Veja este documento para detalhes.