Static file locations were returning hard 404s instead of falling through to PHP, which broke dynamically generated assets like theming CSS files.
72 lines
2.1 KiB
Nginx Configuration File
72 lines
2.1 KiB
Nginx Configuration File
upstream php-handler {
|
|
server nextcloud:9000;
|
|
}
|
|
|
|
map $uri $nonce_uri {
|
|
default "";
|
|
}
|
|
|
|
server {
|
|
listen 80;
|
|
server_name _;
|
|
|
|
client_max_body_size 10G;
|
|
client_body_timeout 300s;
|
|
fastcgi_buffers 64 4K;
|
|
|
|
gzip on;
|
|
gzip_vary on;
|
|
gzip_comp_level 4;
|
|
gzip_min_length 256;
|
|
gzip_types application/javascript application/json text/css text/plain text/xml application/xml image/svg+xml;
|
|
|
|
root /var/www/html;
|
|
index index.php index.html /index.php$request_uri;
|
|
|
|
# Redirect well-known URLs
|
|
location ^~ /.well-known {
|
|
location = /.well-known/carddav { return 301 /remote.php/dav/; }
|
|
location = /.well-known/caldav { return 301 /remote.php/dav/; }
|
|
location ^~ /.well-known { return 301 /index.php$uri; }
|
|
}
|
|
|
|
# Deny access to internal paths
|
|
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }
|
|
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }
|
|
|
|
# Serve static files directly, fall through to PHP for dynamic assets (e.g. theming)
|
|
location ~ \.(?:css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite|map|ogg|flac)$ {
|
|
try_files $uri /index.php$request_uri;
|
|
expires 6M;
|
|
access_log off;
|
|
}
|
|
|
|
location ~ \.woff2?$ {
|
|
try_files $uri /index.php$request_uri;
|
|
expires 7d;
|
|
access_log off;
|
|
}
|
|
|
|
# PHP handling
|
|
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 $path_info;
|
|
fastcgi_param HTTPS on;
|
|
fastcgi_param modHeadersAvailable true;
|
|
fastcgi_param front_controller_active true;
|
|
fastcgi_pass php-handler;
|
|
fastcgi_intercept_errors on;
|
|
fastcgi_request_buffering off;
|
|
fastcgi_max_temp_file_size 0;
|
|
}
|
|
|
|
# Default handler — route everything else through PHP front controller
|
|
location / {
|
|
rewrite ^ /index.php$request_uri last;
|
|
}
|
|
}
|