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

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

Minha corrente nginx.confé mais ou menos 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 esta configuração, a conexão muda de/para SSL/não SSL quando um usuário navega nas páginas do site, SSL para URLs iniciadas /userse não SSL para todas as outras URLs. Como resultado, mesmo que o usuário digite 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 reescrita automática de URL entre SSL/não SSL, conforme obtido pelas configurações acima, mas ainda respeitar a solicitação SSL explícita se https://for digitada explicitamente pelo usuário na barra de endereços do navegador?

Responder1

Do ponto de vista do servidor não há como diferenciar 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 envia uma solicitação HTTP ao seu servidor web. Se você digitou https, ele tentará se conectar à porta 443 (por padrão), e os cabeçalhos da solicitação não contêm informações se o usuário digitou a solicitação ou a solicitação ou, por exemplo, o bot a rastreou.

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

informação relacionada