Parece-me que você não está capturando os três últimos caracteres do nome do arquivo (por exemplo, pdf ), o que significa que eles estão ausentes do URI reconfigurado.
Você deve tentar mover o ) , para que pdf seja capturado como parte de $1 :
rewrite ^/(.*pdf)/(.*)/(.*)$ /$1?md5=$2&expires=$3 break;
EDIT: Em resposta ao seu comentário, você pode adicionar um novo bloco de localização que corresponda aos URIs que você deseja rejeitar, por exemplo:
location ~* \.pdf$ {
return 403;
}
O bloco de localização de expressão regular acima corresponde a qualquer URI que termine com .pdf (com ou sem uma string de consulta). Consulte este documento para obter detalhes.