Como configurar o Nginx para usar ssl / não-ssl para URLs diferentes em um único site, mas sempre use ssl se o usuário explicitamente digitar https na barra de endereço do navegador?

1

Meu atual nginx.conf é algo assim:

server {
    listen      80;
    server_name www.example.com;

    root /var/www/;
    location / {
    }
    location /users {
        rewrite ^ https://$http_host$request_uri? permanent;
    }
}

server {
    listen      443 ssl;
    server_name www.example.com;

    root /var/www/;
    location /users {
    }
    location / {
        rewrite ^ http://$http_host$request_uri? permanent;
    }
}

Com essa configuração, a conexão alterna de / para ssl / não-ssl quando um usuário navega pelas páginas no site, ssl para URLs iniciadas com /users e não-ssl para todos os outros URLs. Como resultado, até mesmo o usuário digita explicitamente https://www.example.com/ na barra de endereço do navegador, a página resultante é redirecionada para http://www.example.com/ .

Existe uma maneira de implementar a reconfiguração automática de url entre ssl / não-ssl conforme atingido pelas configurações acima, mas ainda respeitar a solicitação ssl explícita se https:// for explicitamente digitado pelo usuário na barra de endereços do navegador?

    
por goodbyeera 13.06.2015 / 11:20

1 resposta

1

Do ponto de vista do servidor, não há como diferir a solicitação feita seguindo um link, rastreando um site ou digitando o endereço completo na barra de localização.

Quando você digita um endereço, o navegador da web envia uma solicitação HTTP para seu servidor da web. Se você digitar https, ele tentará se conectar à porta 443 (por padrão), e os cabeçalhos da solicitação não conterão informações se o usuário tiver digitado a solicitação ou a solicitação ou, por exemplo, rastreado pelo bot.

Tudo o que você pode fazer é manter SSL para determinados agentes do usuário e redirecionar para outros.

    
por 13.06.2015 / 13:00

Tags