From b1d964a52662b817b12ee7291a1b2dc076565130 Mon Sep 17 00:00:00 2001 From: F4ilji Date: Tue, 7 Apr 2026 18:08:37 +0500 Subject: [PATCH] =?UTF-8?q?fix(nginx):=20=D1=80=D0=B0=D0=B7=D1=80=D0=B5?= =?UTF-8?q?=D1=88=D0=B8=D1=82=D1=8C=20=D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF?= =?UTF-8?q?=20=D0=BA=20=D0=BF=D1=83=D0=B1=D0=BB=D0=B8=D1=87=D0=BD=D1=8B?= =?UTF-8?q?=D0=BC=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=D0=BC=20storage=20?= =?UTF-8?q?=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20symlink?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Проблема: Правило 'location ~ ^/storage/ { deny all; }' блокировало ВСЕ запросы к /storage/, включая файлы доступные через symlink public/storage -> storage/app/public. Решение: - location /storage/ — разрешает доступ к статическим файлам (изображения, документы) - Запрещает выполнение .php файлов в storage (security) - try_files $uri =404 — отдаёт файлы если они существуют - Запрещает листинг директорий (autoindex off) Fix: Изображения новостей не загружались (404 ошибка) Co-authored-by: Qwen-Coder --- _docker/nginx/prod/conf.d/nginx.conf | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/_docker/nginx/prod/conf.d/nginx.conf b/_docker/nginx/prod/conf.d/nginx.conf index a3a0927..e46b227 100755 --- a/_docker/nginx/prod/conf.d/nginx.conf +++ b/_docker/nginx/prod/conf.d/nginx.conf @@ -108,8 +108,24 @@ server { return 404; } - # Запрет прямого доступа к storage (вне symlink public/storage) - location ~ ^/storage/ { + # Разрешаем доступ к публичным файлам storage (через symlink public/storage) + # Это должны быть ТОЛЬКО изображения, документы и т.д. — НЕ PHP файлы + location /storage/ { + # Запрещаем выполнение PHP файлов в storage + location ~ \.php$ { + deny all; + return 404; + } + + # Разрешаем доступ к статическим файлам + try_files $uri =404; + + # Запрещаем листинг директорий + autoindex off; + } + + # Запрет прямого доступа к internal storage paths (в обход symlink) + location ~ ^/storage/app/(?!public) { deny all; return 404; }