• If you are still using CentOS 7.9, it's time to convert to Alma 8 with the free centos2alma tool by Plesk or Plesk Migrator. Please let us know your experiences or concerns in this thread:
    CentOS2Alma discussion

"autoindex on" only working for full website, not selectively

Bitpalast

Plesk addicted!
Plesk Guru
TITLE:
"autoindex on" only working for full website, not selectively
PRODUCT, VERSION, OPERATING SYSTEM, ARCHITECTURE:
Plesk Onyx, latest MU, CentOS 7.3, 64-Bit
PROBLEM DESCRIPTION:
STEPS TO REPRODUCE:
1) Create a subscription or add-on domain.
2) Create a subdirectory "download" in that domain and upload some files. Do not create an index-file for that directory.
3) Plesk GUI > Subscription > Websites & Domains > Apache & Nginx directives > Enter

location /download {
autoindex on;
}

4) Save and restart web server (Nginx)​
ACTUAL RESULT:
Directory index forbidden / 403 error when opening /download-directory.​
EXPECTED RESULT:
Directory listing​
ANY ADDITIONAL INFORMATION:
The same Nginx directive with
autoindex on;
not limited to a "location" works, but it then applies to all website directories.
YOUR EXPECTATIONS FROM PLESK SERVICE TEAM:
Confirm bug
 
Last edited:
Geeeee, I cannot test that much as it would be required ...

I am seeing that the behavior only occurs on the Onyx systems, not on the 12.5.
 
Hi.

'autoindex' directive works for separate directories.
  1. Create subscription 'autoindex.tld'.
  2. Plesk -> Subscriptions -> Subscription 'autoindex.tld' -> Apache & nginx Settings -> Additional nginx directives -> Enter follow:
    Code:
    location /download/
    { autoindex on; }
    .
    Click 'Ok' or 'Apply'.
    See 1_nginx_directives.png.
  3. Create folder 'download' under this subscription and fill it with some files. No index.* files created. See 2 download directory.png.
  4. Open URL https://autoindex.tld/download/ (or http) in the browser. Directory listing will be displayed. See 3 download directory listing.png
Verified on:
Product version: Plesk Onyx Update #21
OS version: CentOS 7.2.1511
Architecture: 64-bit
 

Attachments

  • 1_nginx_directives.png
    1_nginx_directives.png
    19.4 KB · Views: 16
  • 2 download directory.png
    2 download directory.png
    32.7 KB · Views: 12
  • 3 download directory listing.png
    3 download directory listing.png
    14.6 KB · Views: 11
It doesn't work here. I tried /download and /download/, with and without proxy mode and also tried / (document root), all with restarting web server in between tests. All tests return a 403 error from Nginx. All files are accessible, but directory index does not work. nginx.conf and vhost_nginx.conf both look logically correct, see code below. Could this be an issue with different versions of Nginx?

nginx.conf:
Code:
        server_name www.domain.tld;
        server_name ipv4.domain.tld;
        server_name "domain.tld.123-123-123-123.host.name.tld";

        client_max_body_size 128m;

        proxy_read_timeout 360;

        root "/var/www/vhosts/domain.tld/httpdocs";
        access_log "/var/www/vhosts/system/domain.tld/logs/proxy_access_log";
        error_log "/var/www/vhosts/system/domain.tld/logs/proxy_error_log";

        location ~ ^/~(.+?)(/.*?\.php)(/.*)?$ {
                alias /var/www/vhosts/domain.tld/web_users/$1/$2;
                fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_pass "unix:///var/www/vhosts/system/domain.tld/php-fpm.sock";
                include /etc/nginx/fastcgi.conf;
        }

        location ~ \.php(/.*)?$ {
                fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_pass "unix:///var/www/vhosts/system/domain.tld/php-fpm.sock";
                include /etc/nginx/fastcgi.conf;
        }

        location ~ /$ {
                index index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml;
        }

        include "/var/www/vhosts/system/domain.tld/conf/vhost_nginx.conf";
}

and vhost_nginx.conf:
Code:
location /subdir
{ autoindex on; }

Directory tree:
Code:
drwxr-x---  3 tester psaserv   4096 Mar 31 12:59 httpdocs
--> 
drwxr-xr-x 2 tester psacln 4096 Mar 31 13:12 subdir
-->--> -rw-r--r-- 1 tester psacln     4 Mar 31 13:00 test-subdir.txt
-rw-r--r-- 1 tester psacln    5 Mar 31 12:58 test.txt
 
I repeated this configuration on the our demo server, all works fine...

Some details which I found:
  1. nginx version:
    Code:
    # nginx -v
    nginx version: nginx/1.11.10
  2. I checks that Subscriptions -> Subscription name -> Apache & nginx Settings -> nginx settings -> Proxy mod is enabled.
Maybe nginx version is important? Your config files really looks logically correct.
 
I can confirm that this issue is still present in Plesk Onyx Version 17.5.3

It looks like line below in nginx.conf prevents autoindex on; from working.
Code:
location ~ /$ {
    index index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml;
}

If I place manually my "location" with autoindex on; before this section it works.

Any suggestions ?
 
Last edited:
I can confirm that this issue is still present in Plesk Onyx Version 17.5.3

It looks like line below in nginx.conf prevents autoindex on; from working.
Code:
location ~ /$ {
    index index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml;
}

If I place manually my "location" with autoindex on; before this section it works.

Any suggestions ?

The following directive will work correctly if placed to additional directives:
Code:
location ^~ /directory/ {
    autoindex on;
}

The downside is—all sub-directories of /directory will also become "traverse-able" and all RegExp rules will not work for these locations and files.

It works because ^~ has a priority over any RegExp directives, and ~ here is a plain RegExp directive.
 
Back
Top