diff --git a/docker/Dockerfile b/docker/Dockerfile index 24e4b33..deb686d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -7,6 +7,8 @@ WORKDIR /app/public RUN install-php-extensions redis exif gd +ADD docker/rootfs/Caddyfile /etc/caddy/Caddyfile + # Add php.ini ADD configs/php.ini /usr/local/etc/php/php.ini diff --git a/docker/rootfs/Caddyfile b/docker/rootfs/Caddyfile new file mode 100644 index 0000000..018415c --- /dev/null +++ b/docker/rootfs/Caddyfile @@ -0,0 +1,28 @@ +{ + frankenphp +} + +localhost:80 { + log + + encode zstd br gzip + + root web/ + + #request_header X-Sendfile-Type x-accel-redirect + #request_header X-Accel-Mapping ../data=/data + intercept { + @sendfile header X-Accel-Redirect * + handle_response @sendfile { + root data/ + rewrite * {resp.header.X-Accel-Redirect} + method * GET + header -X-Accel-Redirect + file_server + } + } + + php_server { + try_files {path} index.php + } +} \ No newline at end of file diff --git a/docker/rootfs/start.sh b/docker/rootfs/start.sh index dfaddd8..9c9506f 100644 --- a/docker/rootfs/start.sh +++ b/docker/rootfs/start.sh @@ -96,4 +96,4 @@ echo ' [+] Creating config' _buildConfig > src/inc/config.inc.php -frankenphp php-server --listen ":80" --root /app/public/web \ No newline at end of file +frankenphp run --config /etc/caddy/Caddyfile \ No newline at end of file diff --git a/src/content-controllers/image/image.controller.php b/src/content-controllers/image/image.controller.php index b912a1e..cff23b8 100644 --- a/src/content-controllers/image/image.controller.php +++ b/src/content-controllers/image/image.controller.php @@ -199,7 +199,7 @@ class ImageController implements ContentController } header ("Content-type: image/jpeg"); - readfile($preview); + header('X-Accel-Redirect: '.str_replace(getDataDir().DS,'',$preview)); exit; } else if(in_array('download',$url)) @@ -212,7 +212,7 @@ class ImageController implements ContentController header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($path)); - readfile($path); + header('X-Accel-Redirect: '.str_replace(getDataDir().DS,'',$path)); exit; } } @@ -244,7 +244,7 @@ class ImageController implements ContentController header ("Last-Modified: ".gmdate('D, d M Y H:i:s ', filemtime($path)) . 'GMT'); header ("ETag: $hash"); header('Cache-control: public, max-age=31536000'); - readfile($path); + header('X-Accel-Redirect: '.str_replace(getDataDir().DS,'',$path)); break; case 'png': @@ -252,7 +252,8 @@ class ImageController implements ContentController header ("Last-Modified: ".gmdate('D, d M Y H:i:s ', filemtime($path)) . 'GMT'); header ("ETag: $hash"); header('Cache-control: public, max-age=31536000'); - readfile($path); + header('X-Accel-Redirect: '.str_replace(getDataDir().DS,'',$path)); + break; case 'gif': @@ -260,7 +261,7 @@ class ImageController implements ContentController header ("Last-Modified: ".gmdate('D, d M Y H:i:s ', filemtime($path)) . 'GMT'); header ("ETag: $hash"); header('Cache-control: public, max-age=31536000'); - readfile($path); + header('X-Accel-Redirect: '.str_replace(getDataDir().DS,'',$path)); break; case 'webp': @@ -268,7 +269,7 @@ class ImageController implements ContentController header ("Last-Modified: ".gmdate('D, d M Y H:i:s ', filemtime($path)) . 'GMT'); header ("ETag: $hash"); header('Cache-control: public, max-age=31536000'); - readfile($path); + header('X-Accel-Redirect: '.str_replace(getDataDir().DS,'',$path)); break; } } diff --git a/src/content-controllers/text/text.controller.php b/src/content-controllers/text/text.controller.php index 3feccea..7ddba4b 100644 --- a/src/content-controllers/text/text.controller.php +++ b/src/content-controllers/text/text.controller.php @@ -32,7 +32,7 @@ class TextController implements ContentController header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($path)); - readfile($path); + header('X-Accel-Redirect: '.str_replace(getDataDir().DS,'',$path)); exit; } } diff --git a/src/content-controllers/video/video.controller.php b/src/content-controllers/video/video.controller.php index 3b2575f..b669e55 100644 --- a/src/content-controllers/video/video.controller.php +++ b/src/content-controllers/video/video.controller.php @@ -44,8 +44,8 @@ class VideoController implements ContentController } header ("Content-type: image/jpeg"); - readfile($preview); - + header('X-Accel-Redirect: '.str_replace(getDataDir().DS,'',$preview)); + } else if(in_array('download',$url)) { @@ -57,7 +57,7 @@ class VideoController implements ContentController header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($path)); - readfile($path); + header('X-Accel-Redirect: '.str_replace(getDataDir().DS,'',$path)); exit; } }