Nginx: protege o diretório e os arquivos

1

Eu escrevi isso para evitar que o diretório "download" seja acessado, mas a partir do IP 1.2.3.4.

location ~ /folder/download {
    allow 1.2.3.4;
    deny all;
    return 403;
}

No entanto, o diretório "folder" também está sendo bloqueado e eu não queria isso.

O que estou fazendo de errado?

ATUALIZAÇÃO:

Aqui vai toda a configuração real:

server {
    server_name www.domain.com;
    rewrite ^ $scheme://domain.com$request_uri? permanent;
}

server {
    server_name atpc.info;

    access_log /var/log/nginx/atpc.info.access;
    error_log /var/log/nginx/atpc.info.error;

    root /var/www/atpc.info;

    location ^~ folder/download {
            allow 1.2.3.4;
            deny all;
    }

    location ^~ folder/includes {
            allow 1.2.3.4;
            deny all;
    }

    location ^~ folder/mythings {
            allow 1.2.3.4;
            deny all;
    }

    location ^~ folder/functions {
            allow 1.2.3.4;
            deny all;
    }

    location / { index index.htm index.php; }

    location ~ .php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
    }

    location = /favicon.ico {
            return 204;
            access_log off;
            log_not_found off;
    }

    location = /robots.txt { allow all; log_not_found off; access_log off; }
    location ~ /\. { deny all; access_log off; log_not_found off; }
}

Obrigado.

    
por Roger 14.10.2011 / 03:19

1 resposta

1

Provavelmente você deseje location ^ ~ em vez de location ~, já que a primeira é uma correspondência de prefixo que não permite substituições de regex e a segunda é uma localização de regex. Além disso, remova o retorno 403; As diretivas allow e deny são suficientes para a sua aplicação, e o retorno será sempre avaliado, o que significa que todos receberão um 403.

    
por 14.10.2011 / 14:09