diff --git a/DOCUMENTATION/SYSTEM_ADMINISTRATORS/CONFIGURE.md b/DOCUMENTATION/SYSTEM_ADMINISTRATORS/CONFIGURE.md index f3ed5e589b..a0682b98dd 100644 --- a/DOCUMENTATION/SYSTEM_ADMINISTRATORS/CONFIGURE.md +++ b/DOCUMENTATION/SYSTEM_ADMINISTRATORS/CONFIGURE.md @@ -191,14 +191,19 @@ The ones that you may want to set are listed below for clarity. until they get their databases fixed up. See "UTF-8 database" above for details. -* `schemacheck` (enum["runtime", "script"], default "runtime"): when to let - plugins check the database schema to add tables or update them. 'runtime' - can be costly (plugins check the schema on every hit, adding potentially - several db queries, some quite long), but not everyone knows how to run a - script or has the access in their hosting environment to do so. If you can, - set this to 'script' and run scripts/checkschema.php whenever you install - or upgrade a plugin. +* `schemacheck` (enum["runtime", "script"], default "runtime"): when + to let plugins check the database schema to add tables or update + them. 'runtime' can be costly (plugins check the schema on every + hit, adding potentially several db queries, some quite long), but + not everyone knows how to run a script or has the access in their + hosting environment to do so. If you can, set this to 'script' and + run scripts/checkschema.php whenever you install or upgrade a + plugin. +* `x-static-delivery` (string, default null): when a string, use this + as the header with wich to serve static files. Possible values are + 'X-Sendfile' (for Apache and others) and 'X-Accel-Redirect' (for + nginx). syslog ------------------------------------------------------------------------------- diff --git a/actions/attachment.php b/actions/attachment.php index a7e1c5d161..f261cc30bd 100644 --- a/actions/attachment.php +++ b/actions/attachment.php @@ -202,11 +202,16 @@ class AttachmentAction extends ManagedAction } /** - * Include $filepath in the response, for viewing and downloading + * Include $filepath in the response, for viewing and downloading. + * If provided, $filesize is used to size the HTTP request, + * otherwise it's value is calculated */ static function sendFile(string $filepath, $filesize) { - if (common_config('site', 'use_x_sendfile')) { - header('X-Sendfile: ' . $filepath); + if (is_string(common_config('site', 'x-static-delivery'))) { + $relative_path = end(explode(INSTALLDIR, $filepath)); + common_debug("Using Static Delivery with header: '" . + common_config('site', 'x-static-delivery') . ": {$relative_path}'"); + header(common_config('site', 'x-static-delivery') . ": {$relative_path}"); } else { if (empty($filesize)) { $filesize = filesize($filepath); diff --git a/actions/attachment_thumbnail.php b/actions/attachment_thumbnail.php index 8d4eb6f884..2a2ce61d94 100644 --- a/actions/attachment_thumbnail.php +++ b/actions/attachment_thumbnail.php @@ -84,6 +84,6 @@ class Attachment_thumbnailAction extends AttachmentAction header('Expires: 0'); header('Content-Transfer-Encoding: binary'); - AttachmentAction::sendFile($filepath, $size); + AttachmentAction::sendFile($filepath, $filesize); } } diff --git a/lib/imagefile.php b/lib/imagefile.php index 85747072a5..c6465c52b1 100644 --- a/lib/imagefile.php +++ b/lib/imagefile.php @@ -575,7 +575,7 @@ class ImageFile extends MediaFile $filename = basename($this->filepath); $extension = File::guessMimeExtension($this->mimetype); - $outname = "thumb-{$this->fileRecord->getID()}-{$width}x{$height}-{$filename}." . $extension; + $outname = "thumb-{$this->fileRecord->getID()}-{$width}x{$height}-{$filename}"; $outpath = File_thumbnail::path($outname); // The boundary box for our resizing