我正在尝试为我的内部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 ...
答案 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块而不是服务器块。