2013-05-04 66 views
1

我試圖打開索引只是我的內部IP範圍。nginx autoindex僅適用於內部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 ... 

回答

2

顯然,要做到這一點的方法是將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; 
    } 
} 

而且很顯然地緣塊進入的HTTP塊而不是服務器模塊。

相關問題