Nginx:保护目录和文件

Nginx:保护目录和文件

我写这个是为了防止目录“下载”被访问,但来自 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; }
}

谢谢。

答案1

您可能需要 location ^~ 而不是 location ~,因为前者是不允许正则表达式覆盖的前缀匹配,而后者是正则表达式位置。另外,删除 return 403;allow 和 denied 指令足以满足您的应用程序的要求,并且将始终评估 return,这意味着每个人都会得到 403。

相关内容