Compare commits

..

2 Commits

Author SHA1 Message Date
Thomas Gräfenstein
0a305a47b9 gitignore claude local settings 2026-03-22 17:21:13 +01:00
Thomas Gräfenstein
d88a8db9f1 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.
2026-03-22 17:19:34 +01:00
3 changed files with 10 additions and 36 deletions

View File

@@ -1,30 +0,0 @@
{
"permissions": {
"allow": [
"WebSearch",
"WebFetch(domain:docs.docker.com)",
"WebFetch(domain:hub.docker.com)",
"WebFetch(domain:caddyserver.com)",
"WebFetch(domain:docs.nextcloud.com)",
"Bash(git log:*)",
"Bash(git diff:*)",
"Bash(git status:*)"
],
"deny": [
"Bash(ssh:*)",
"Bash(rm -rf:*)",
"Bash(docker system prune:*)",
"Bash(docker volume rm:*)",
"Bash(docker compose down:*)",
"Bash(docker stop:*)",
"Bash(docker rm:*)",
"Bash(scp:*)",
"Bash(rsync:*)",
"Bash(curl -X POST:*)",
"Bash(curl -X DELETE:*)",
"Bash(git push:*)",
"Bash(git reset --hard:*)",
"Bash(git clean:*)"
]
}
}

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.env .env
.idea/ .idea/
*.iml *.iml
.claude/settings.local.json

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;
} }
} }