IP允许子目录访问NGINX

时间:2016-11-04 17:35:38

标签: nginx

我实际上使用nginx作为我的网络服务器即时尝试使用此方法拒绝所有子目录访问:

location / {
    root   /usr/share/nginx/html/project;
    index  index.html index.htm index.php;
}



location ~ ^/subdir/ { 
    allow 192.168.1.0/24; 
    deny all; 
    try_files $uri $uri/ /index_subdir.php?$query_string;
}

但是nginx试图在项目文件夹中找到index_subdir.php。

我希望你能帮助我。

亲切的问候!!!

1 个答案:

答案 0 :(得分:1)

您可能需要进行一些更改:

server {
    root   /usr/share/nginx/html/project;
    index  index.html index.htm index.php;

    location / {
    }
    location ~ \.php$ {
        ...
    }

    location ^~ /subdir { 
        allow 192.168.1.0/24; 
        deny all; 

        try_files $uri $uri/ /subdir/index_subdir.php?$query_string;

        location ~ \.php$ {
            ...
        }
    }
}

通常,rootindex指令放在server块级别,以便所有location块继承相同的值。有关详细信息,请参阅this document

我假设您有一个location ~ \.php$块,当前执行所有PHP脚本。

我的示例使用带有^~修饰符的前缀位置,而不是正则表达式位置。修饰符使其优先于server块中的位置。有关详细信息,请参阅this document

try_files指令的最后一个元素是一个URI,这意味着它必须包含/subdir前缀,如果您特别想要该文件夹中的文件。有关详细信息,请参阅this document

您需要在location ~ \.php$块中复制另一个location ^~ /subdir,以便PHP脚本受到相同访问规则的保护。