Indica ao nginx para SSL criptografar documentos PHP específicos

1

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 essa 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 eu quero SSL e todos os outros arquivos estão sendo servidos sem ele?

    
por Frank Vilea 23.11.2011 / 14:20

3 respostas

3

Desde o nginx 0.7.14, você pode criar uma configuração compacta para http e https servindo sem dividir em {} blocos de servidores separados:

listen 80;
listen 443 ssl;

# rest ssl configuration...

Se você quiser proteger vários locais - basta verificar e redirecionar com "retornar" ou "reescrever":

location = /login.php {

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

      ...
}
    
por 23.11.2011 / 19:32
1

Você pode (ver a outra resposta), mas geralmente é uma idéia melhor criptografar tudo - transferir nome de usuário e senha de forma segura e, em seguida, dar a eles um cookie de acesso completo à conta é quase tão perigoso quanto não criptografar.

Como um exemplo de quão perigoso é, veja aqui um programa que possui automaticamente usuários do Twitter / facebook / google / etc aproveitando este erro - > link

    
por 23.11.2011 / 16:46
0

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

A configuração SSL (que eu suponho estar em seu ".. outras configurações") deve ir apenas no bloco server que está escutando na porta 443.

    
por 23.11.2011 / 16:25