1

我正在尝试仅为我的内部 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 ...
4

1 回答 1

1

显然,这样做的方法是将 URL 重写为内部 URL,然后根据此线程使用单独的位置块。

所以你的配置看起来像:

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

显然地理块进入 http 块而不是服务器块。

于 2013-05-04T02:58:24.507 回答