Está fazendo exatamente o que você mandou. Tente isto
return 301 https://$server_name$request_uri/;
Na minha configuração, tenho o seguinte:
server {
listen 8080;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
...
O problema é que uma chamada para http://example.com:8080
retorna um redirecionamento para https://example.com:8080
em vez do esperado https://example.com/
(implicitamente para a porta 443
)
Como evito que o nginx use a porta errada?
Uma regra semelhante para a porta 80 funciona bem, provavelmente porque não passa na porta padrão 80 como parte do URI
Atualização: O problema no teste é em parte devido aos redirecionamentos de cache dos navegadores, o que significa que qualquer teste subseqüente produzirá o resultado anterior.
Eu adicionei as seguintes instruções para server
port_in_redirect off;
No entanto, testando no modo anônimo / privado, obtenho o redirecionamento correto, mas apenas na primeira vez. Na segunda vez que tento o mesmo link, recebo o redirecionamento incorreto novamente. O wget não exibe esse comportamento e sempre obtém o redirecionamento correto, provavelmente porque não armazena em cache. No entanto, isso significa que ainda há algo errado com relação ao redirecionamento que estou tentando, pois os navegadores aparentemente decidem ignorá-los com números de porta não padrão.
Tags nginx