Sua configuração original não está aproveitando a configuração do nginx. Com uma reescrita como essa, o nginx terá que fazer uma análise extensiva em cada solicitação. Se você estiver em um ambiente em que o desempenho e o tempo de resposta rápido são essenciais, use os blocos de servidor.
# Add www and redirect subdomains.
server {
listen 80;
server_name domain.com *.domain.com;
rewrite ^ http://www.domain.com$request_uri permanent;
}
Desta forma, não há uma análise complexa, o Nginx usa uma tabela de hash para as pesquisas do servidor e a reescrita usa a variável $ request_uri já analisada.