Opened 9 years ago

Closed 9 years ago

#211 closed defect (invalid)

“autoindex $var” does not work

Reported by: Roman Odaisky Owned by: somebody
Priority: minor Milestone:
Component: nginx-core Version: 1.2.x
Keywords: Cc:
uname -a: Linux pogekone.qwertty.com 2.6.32-5-amd64 #1 SMP Mon Mar 7 21:35:22 UTC 2011 x86_64 GNU/Linux
nginx -V: nginx version: nginx/1.2.1
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-pcre-jit --with-debug --with-http_addition_module --with-http_dav_module --with-http_flv_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_mp4_module --with-http_perl_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-http_xslt_module --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/nginx-auth-pam --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/chunkin-nginx-module --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/headers-more-nginx-module --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/nginx-development-kit --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/nginx-echo --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/nginx-http-push --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/nginx-lua --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/nginx-upload-module --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/nginx-upload-progress --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/nginx-upstream-fair --add-module=/home/roma/data/soft/source/nginx-1.2.1/debian/modules/nginx-dav-ext-module

Description

I expected to be able to use variables as parameters of any directive. Instead, some of them, e. g. autoindex, require literal “on” or “off”.

It should be possible to use variables everywhere except directives that are evaluated once at Nginx startup.

map $host $per_host_autoindex { ... }
server {
    server_name ~...;
    location / {
        autoindex $per_host_autoindex;
    }
}

Change History (1)

comment:1 by Maxim Dounin, 9 years ago

Resolution: invalid
Status: newclosed

The "autoindex" directive, as well as many other directives, doesn't support variables. If a directive supports variables, it's explicitly documented.

Note well that variables support require additional code and additional run-time processing, and it makes config validation impossible. So there should be a good reason for the directive to support variables, even if it's possible from theoretical point of view.

In case of the use case outlined above you probably want to use separate server blocks instead (at least two, one for virtual hosts with autoindex enabled, and one for ones with autoindex disabled).

Note: See TracTickets for help on using tickets.