Lastly, I had a problem with Nginx after an update and the problem was solved. My current problem is that when I try to download multiple files or folders, the “download.html” file tries to download and gives a “site could not be reached” error. when I download a single file, it downloads without a problem. I have played with the configurations but no improvement.
Worked! Also thank you very much for your detailed explanation, this is a great way to solve things by learning.
Required Information
G_DIETPI_VERSION_CORE=9
G_DIETPI_VERSION_SUB=2
G_DIETPI_VERSION_RC=1
G_GITBRANCH='master'
G_GITOWNER='MichaIng'
bookworm 0
Linux DietPi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
arm64
RPi 4 Model B (aarch64)
Additional Information (if applicable)
Software title | (EG: Nextcloud)
I think I have out of date Nginx configuration.
# Based on: https://github.com/nextcloud/documentation/blob/05b7165998ee316a0ce3449cf66e0182c8bec644/admin_manual/installation/nginx-subdir.conf.sample
# Redirect webfinger and nodeinfo requests to Nextcloud endpoint
location /.well-known/webfinger { return 301 /nextcloud/index.php$request_uri; }
location /.well-known/nodeinfo { return 301 /nextcloud/index.php$request_uri; }
location ^~ /nextcloud {
# Omit Nginx version on error response
server_tokens off;
# Set max upload size
client_max_body_size 1048576M;
fastcgi_buffers 64 4K;
# Enable gzip but do not remove ETag headers
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
# HTTP response headers borrowed from Nextcloud `.htaccess`
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always;
# Remove X-Powered-By, which is an information leak
fastcgi_hide_header X-Powered-By;
# Specify how to handle directories -- specifying `/nextcloud/index.php$request_uri`
# here as the fallback means that Nginx always exhibits the desired behaviour
# when a client requests a path that corresponds to a directory that exists
# on the server. In particular, if that directory contains an index.php file,
# that file is correctly served; if it doesn't, then the request is passed to
# the front-end controller. This consistent behaviour means that we don't need
# to specify custom rules for certain paths (e.g. images and other assets,
# `/updater`, `/ocm-provider`, `/ocs-provider`), and thus
# `try_files $uri $uri/ /nextcloud/index.php$request_uri`
# always provides the desired behaviour.
index index.php index.html /nextcloud/index.php$request_uri;
# Rule borrowed from `.htaccess` to handle Microsoft DAV clients
location = /nextcloud {
if ( $http_user_agent ~ ^DavClnt ) {
return 302 /nextcloud/remote.php/webdav/$is_args$args;
}
}
# Rules borrowed from `.htaccess` to hide certain paths from clients
location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }
# Ensure this block, which passes PHP files to the PHP process, is above the blocks
# which handle static assets (as seen below). If this block is not declared first,
# then Nginx will encounter an infinite rewriting loop when it prepends
# `/nextcloud/index.php` to the URI, resulting in a HTTP 500 error response.
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+?\.php)(/.*|)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS $https;
fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice
fastcgi_param front_controller_active true; # Enable pretty URLs without /index.php/
fastcgi_pass php;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
fastcgi_max_temp_file_size 0; # Allow downloads > 1 GiB: https://github.com/nextcloud/documentation/pull/7979
}
include mime.types;
types {
text/javascript js mjs;
application/wasm wasm;
}
location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map)$ {
try_files $uri /nextcloud/index.php$request_uri;
# HTTP response headers borrowed from Nextcloud `.htaccess`
add_header Cache-Control "public, max-age=15778463$asset_immutable";
#add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Download-Options "noopen" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
add_header X-Robots-Tag "noindex, nofollow" always;
add_header X-XSS-Protection "1; mode=block" always;
access_log off; # Optional: Don't log access to assets
}
location ~ \.woff2?$ {
try_files $uri /nextcloud/index.php$request_uri;
expires 7d; # Cache-Control policy borrowed from `.htaccess`
access_log off; # Optional: Don't log access to assets
}
# Rule borrowed from `.htaccess`
location /nextcloud/remote {
return 301 /nextcloud/remote.php$request_uri;
}
location /nextcloud {
try_files $uri $uri/ /nextcloud/index.php$request_uri;
}
}
Why do you think that?
Theoretically you could get the current NC/nginx config file from GitHub at https://raw.githubusercontent.com/MichaIng/DietPi/master/.conf/dps_114/nginx.nextcloud.conf
1 Like
The reason I thought of this is that I can download individual files but have problems downloading multiple files. Also, when I click on the “files” icon, this is the URL it gives me, is it normal for it to repeat “files” in URL twice?
What else could the problem be related to?
When I try to download a folder or multiple files, the download file is downloaded.
ping @MichaIng I know you are using NC as well. Maybe you can have a look
Jappe
March 22, 2024, 1:07pm
8
Yes this is not intended, it should ceate a zip which then get’s downloaded. Do you have php module zip
installed? It should also give you a warning in the admin settings, if not.
There is no warning in the dashboard about the zip module. Should I also check from the console?
Jappe:
php module zip
zip module appears in the list
php -m
[PHP Modules]
apcu
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
hash
iconv
igbinary
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
random
readline
redis
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
The Nginx config is up-to-date, as it was updated during DietPi v9.1 update. I did not test downloading multiple files with Nginx recently, just with Apache.
I checked the code, it should be download.php
without HTML: server/apps/files/ajax/download.php at 49cd6670026dea4880d016b3515342c2aa274600 · nextcloud/server · GitHub
The extension was likely added by Nginx as the MIME type was unexpected and I have the suspicion that the reason is a wrong URL path and hence non-existing file, so that it was handled by the PHP backend.
What is the URL of this download.php.html
? The browser development tools have a network tab as well, where you can see all requests done, and the browser console there likely shows some related error(s) as well.
The files/files
URL is intended, indeed, I see this with Apache as well.
1 Like
I found the following link in the meta information in the downloaded file.
https://cloud.*******.com/nextcloud/apps/files/ajax/download.php?dir=%2F&files=%5B%2212%20Mart%20-%2018%20Mart%22%5D&downloadStartSecret=vxyjwpu6lqb
I don’t see any error code in the Network tab of the development tools. But the console tab shows some bugs:
Also SVG icons don’t look transparent as they should. Could this be related to this problem?
I feel sad that I still have not found a solution to this issue.
system
Closed
October 4, 2024, 11:14am
16
This topic was automatically closed 178 days after the last reply. New replies are no longer allowed.