[CORE] Fix X-Sendfile for nginx, using the X-Accel-Redirect header

This commit is contained in:
Miguel Dantas 2019-07-02 22:35:05 +01:00 committed by Diogo Cordeiro
parent 3e5ce46e98
commit a5259073df
4 changed files with 22 additions and 12 deletions

View File

@ -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
-------------------------------------------------------------------------------

View File

@ -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);

View File

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

View File

@ -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