Diga ao nginx para criptografar SSL documentos PHP específicos

Diga ao nginx para criptografar SSL documentos PHP específicos

Eu configurei meu servidor com as seguintes configurações:

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

   location /login\.php
   {
   rewrite ^(.*) https://www.example.com/login.php$1 last;        
   }

   .. other settings
}

No entanto, com esta configuração recebo um erro de redirecionamento (muitos redirecionamentos). Existe uma maneira de dizer ao nginx que se eu tiver o arquivo login.php que desejo SSL e todos os outros arquivos serão servidos sem ele?

Responder1

Desde o nginx 0.7.14, você pode criar configurações compactas para veiculação http e https sem dividir em blocos {} de servidor separados:

listen 80;
listen 443 ssl;

# rest ssl configuration...

Se você deseja proteger vários locais - basta verificar o esquema e redirecionar com "return" ou "rewrite":

location = /login.php {

      if($scheme = "http") {
              rewrite ^ https://$host$request_uri? permanent;
      }

      ...
}

Responder2

Você pode (veja a outra resposta), mas geralmente é uma idéia melhor criptografar tudo - transferir nome de usuário e senha com segurança e fornecer a eles um cookie de acesso completo à conta em texto simples é quase tão perigoso quanto não criptografar.

Como exemplo de quão perigoso é, veja aqui um programa que possui automaticamente usuários do Twitter/Facebook/Google/etc tirando vantagem desse erro -->http://codebutler.com/firesheep

Responder3

Coloque o listen 80;e em blocos listen 443;separados .server

OConfiguração SSL(que presumo que esteja em ".. outras configurações") só deve ir no serverbloco que está escutando na porta 443.

informação relacionada