A diretiva rewrite
anexa a string de consulta à URL de substituição por padrão, de maneira semelhante ao [QSA]
do Apache. A partir da documentação :
If a replacement string includes the new request arguments, the previous request arguments are appended after them. If this is undesired, putting a question mark at the end of a replacement string avoids having them appended, for example:
rewrite ^/users/(.*)$ /show?user=$1? last;
Mas não é como você deve corrigir o problema.
Isso tem mais um problema, pois o redirecionamento http para https é ineficiente. Esse if
deve ser avaliado em todas as solicitações , e o rewrite
tem uma regex gratuita. Consulte Reescrita de impostos para obter mais informações.
Em vez disso, você deve ter um bloco server
completamente separado para HTTP versus HTTPS e remover completamente if
/ rewrite
do bloco HTTPS server
.
server {
listen 80;
listen [::]:80; # You also forgot this...
server_name {{ .SERVER_NAME }} www.{{ .SERVER_NAME }};
return 301 https://{{ .SERVER_NAME }}$request_uri;
}