• We value your experience with Plesk during 2024
    Plesk strives to perform even better in 2025. To help us improve further, please answer a few questions about your experience with Plesk Obsidian 2024.
    Please take this short survey:

    https://pt-research.typeform.com/to/AmZvSXkx
  • The Horde webmail has been deprecated. Its complete removal is scheduled for April 2025. For details and recommended actions, see the Feature and Deprecation Plan.
  • We’re working on enhancing the Monitoring feature in Plesk, and we could really use your expertise! If you’re open to sharing your experiences with server and website monitoring or providing feedback, we’d love to have a one-hour online meeting with you.

"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