Nginx redireciona arquivos inexistentes em https para http com try_files

6

Eu pesquisei a maneira correta de fazer isso por um tempo.

Em um servidor https quando um arquivo inexistente é solicitado, redirecione para o servidor http e solicite o mesmo arquivo.

por exemplo.

link

link

link

link

Este snippet baseado em if funciona

listen 443 ssl;

#... more config

if (!-e $request_filename) {
    rewrite ^ http:// example.org$request_uri permanent;
    break;
}

Mas "se é mau" - link

Portanto, esta é a minha tentativa em uma versão try_files - o que não funciona.

   try_files $uri @redirect;

   location @redirect {
           rewrite ^ http:// example.org$request_uri permanent;
           break;
   }

Eu tentei inúmeras variações disso; proxy_redirects, retorna 302 - eles não redirecionam ou não funcionam quando um arquivo está em um subdiretório, ou não redirecionam a raiz se estiverem vazios.

Alguém tem uma substituição baseada em try_files à prova de balas?

(ps. espaços devido ao verificador de links sem saber sobre example.org!)

    
por Ali W 27.07.2012 / 21:11

1 resposta

15
server {
    listen 443 ssl;

    root /path/to/documents;

    location / {
        try_files $uri @redirect; 
    }

    location @redirect {
        return 301 http://example.org$request_uri;
    }
}
    
por 27.07.2012 / 21:59

Tags