Regra de redirecionamento NGINX: Subpasta somente para HTTPS?

5

Estou tentando redirecionar qualquer pessoa que acessar a seção administrativa do meu site para a versão HTTPS dela. A regra atual de reescrita é a seguinte:

server {
        listen          80;
        server_name     domain.com;

        location / {
                index index.php index.html;
                root  /home/domain.com/public;
                }

        #Redirect Admin requests to secure server
        location /www/admin/  {
                rewrite ^/(.*) https://domain.com$1 permanent;
                }
}

O problema com essa regra é encaminhar apenas http://domain.com/www/admin para HTTPS - ir para http://domain.com/www/admin/index.php , por exemplo, não redireciona. Alguma idéia de como corrigir isso para que qualquer coisa abaixo de /www/admin também seja redirecionada?

    
por Professor Frink 28.04.2011 / 17:27

2 respostas

5

Leia as quatro regras na entrada do wiki vinculada por AlexD. Locais de expressões regulares (como sua localização no PHP) têm precedência sobre locais estáticos simples. Para evitar isso, você deseja usar o sinalizador ^~ em seu local estático:

location ^~ /www/admin/ {
    rewrite ^ https://domain.com$request_uri? permanent;
}

EDIT: Além disso, você não deve definir sua raiz no local / . Configure-o no servidor e deixe que todos os seus locais herdem a configuração. Veja Armadilhas e erros comuns 1.2

    
por 28.04.2011 / 21:47
2

Verifique a documentação do nginx para obter uma descrição da diretiva de localização . Você deve usar location em vez de location =

    
por 28.04.2011 / 17:54