O melhor lugar para corrigir o problema é onde a conexão SSL é finalizada. Se estivesse executando nginx
, você usaria uma instrução proxy_redirect
para mapear http
to https
no cabeçalho Location
. Não conheço o AWS ELB, por isso não posso comentar como corrigi-lo lá.
Certas circunstâncias fazem com que nginx
responda com um redirecionamento e presume que o esquema é o mesmo que o esquema usado para se conectar a ele (ou seja, do AWS ELB). AFAIK existem três maneiras de atenuar o problema no servidor nginx
de backend.
1) A partir da versão 1.11.8, a instrução absolute_redirect off;
fará com que o cabeçalho Location
use uma URL relativa, o que significa que o esquema e o nome de domínio estão ausentes.
server {
absolute_redirect off;
...
}
Veja este documento para saber mais.
2) Inibir o comportamento de anexar um /
para diretórios à direita usando uma instrução try_files
:
server {
root /path/to/files;
location / {
try_files $uri =404;
}
...
}
Veja este documento para saber mais.
3) Corrija o problema com uma instrução return
explícita.
server {
root /path/to/files;
location ~ [^/]$ {
if (-d $request_filename) {
return 302 https://$host$uri/$is_args$args;
}
}
location / {
}
...
}
Veja este documento para saber mais e esta advertência sobre o uso de if
.