Назад | Перейти на главную страницу

Nginx: защитить каталог и файлы

Я написал это, чтобы предотвратить доступ к каталогу "download", но с IP 1.2.3.4.

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

Однако каталог «папка» тоже блокируется, и я этого не хотел.

Что я делаю не так?

ОБНОВИТЬ:

Вот и весь настоящий конфиг:

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; }
}

Спасибо.

Вероятно, вам нужно местоположение ^ ~ вместо местоположения ~, поскольку первое - это совпадение префикса, которое не позволяет переопределить регулярное выражение, а второе - местоположение регулярного выражения. Также удалите возврат 403; Директив allow и deny достаточно для вашего приложения, и возврат всегда будет оцениваться, что означает, что каждый получит 403.