nginx autoindex仅用于内部IP地址

时间:2013-05-04 02:23:55

标签: nginx

我正在尝试为我的内部IP范围打开索引。

到目前为止我测试过的一些事情:

geo $internals {
    default 0;
    192.168.2.0/24 1;
}

location / {

        # Attempt 1, same error message.
        if ($internals) {
               autoindex on;
        }

        # Attempt 2, same error message.
        if ($remote_addr = "192.168.2.[2|254]") {
                autoindex on;
        }

        try_files $uri $uri/ /index.php;
}

无论我尝试什么,我总是得到:

Restarting nginx: nginx: [emerg] "autoindex" directive is not allowed here in ...

1 个答案:

答案 0 :(得分:1)

显然,执行此操作的方法是将URL重写为内部URL,然后根据this thread使用单独的位置块。

所以你的配置看起来像是:

http {

    geo $internals {
        default 0;
        192.168.2.0/24 1;
    }

    server {
        listen 80;
        server_name example.com www.example.com

    if ($internals) {
        rewrite ^/(.*)$ /post_redirect/$1 last;
    }

    location /post_redirect/ {
        internal;
        autoindex on;
        try_files $uri $uri/ /index.php;
    }

    location / {
        try_files $uri $uri/ /index.php;
    }
}

显然,geo块进入http块而不是服务器块。