fix nginx rewrite loop causing slow page loads and 500 errors

Static file locations now return 404 instead of falling through to
index.php, and the default location uses a clean rewrite to prevent
/index.php/index.php redirect cycles.
This commit is contained in:
2026-03-22 17:19:34 +01:00
parent 995dfcc099
commit d88a8db9f1

View File

@@ -2,6 +2,10 @@ upstream php-handler {
server nextcloud:9000;
}
map $uri $nonce_uri {
default "";
}
server {
listen 80;
server_name _;
@@ -30,22 +34,21 @@ server {
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }
# Serve static files directly
# Serve static files directly — only if file exists on disk
location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map|ogg|flac)$ {
try_files $uri /index.php$request_uri;
try_files $uri =404;
expires 6M;
access_log off;
}
location ~ \.woff2?$ {
try_files $uri /index.php$request_uri;
try_files $uri =404;
expires 7d;
access_log off;
}
# PHP handling
location ~ \.php(?:$|/) {
rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode(_arm64)?\/proxy) /index.php$request_uri;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
@@ -61,8 +64,8 @@ server {
fastcgi_max_temp_file_size 0;
}
# Default handler
# Default handler — route everything else through PHP front controller
location / {
try_files $uri $uri/ /index.php$request_uri;
rewrite ^ /index.php$request_uri last;
}
}