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; server nextcloud:9000;
} }
map $uri $nonce_uri {
default "";
}
server { server {
listen 80; listen 80;
server_name _; server_name _;
@@ -30,22 +34,21 @@ server {
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { 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)$ { 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; expires 6M;
access_log off; access_log off;
} }
location ~ \.woff2?$ { location ~ \.woff2?$ {
try_files $uri /index.php$request_uri; try_files $uri =404;
expires 7d; expires 7d;
access_log off; access_log off;
} }
# PHP handling # PHP handling
location ~ \.php(?:$|/) { 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)(/.*)$; fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info; set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404; try_files $fastcgi_script_name =404;
@@ -61,8 +64,8 @@ server {
fastcgi_max_temp_file_size 0; fastcgi_max_temp_file_size 0;
} }
# Default handler # Default handler — route everything else through PHP front controller
location / { location / {
try_files $uri $uri/ /index.php$request_uri; rewrite ^ /index.php$request_uri last;
} }
} }