From 4393ff3dadc5f41d0d361fafe3504edd1ff1aea2 Mon Sep 17 00:00:00 2001 From: erjemin Date: Fri, 20 Feb 2026 13:10:07 +0300 Subject: [PATCH] =?UTF-8?q?mod:=20nginx-=D0=BA=D0=BE=D0=BD=D1=84=D0=B8?= =?UTF-8?q?=D0=B3=20=D1=85=D0=BE=D1=81=D1=82=D0=B0=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=87=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B7=20docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ => nginx}/dq-app--external-nginx.conf | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) rename configs/{ => nginx}/dq-app--external-nginx.conf (71%) diff --git a/configs/dq-app--external-nginx.conf b/configs/nginx/dq-app--external-nginx.conf similarity index 71% rename from configs/dq-app--external-nginx.conf rename to configs/nginx/dq-app--external-nginx.conf index d395735..2379303 100644 --- a/configs/dq-app--external-nginx.conf +++ b/configs/nginx/dq-app--external-nginx.conf @@ -3,15 +3,18 @@ # ============================================================================== # # ВНИМАНИЕ: -# Этот файл является шаблоном. При первом деплое он копируется в `~/docker-app/dq-site/ndq-app--external-nginx.conf`, -# а затем через силинк в `/etc/nginx/sites-available/` и активируется. -# При последующих деплоях он НЕ перезаписывается автоматически, чтобы не затереть SSL-сертификаты и ручные правки. +# Этот файл является шаблоном. При первом деплое он копируется в `/home/user/app/dq-site/config/nginx/dq-app--external-nginx.conf`, +# а затем (уже руками) через силинк в `/etc/nginx/sites-available/` и активируется. +# При последующих деплоях он НЕ ПЕРЕЗАПИСЫВАЕТСЯ автоматически, чтобы не затереть SSL-сертификаты и ручные правки. # # Если вы изменили этот файл в репозитории и хотите применить изменения на проде: -# вам нужно обновить файл в `~/docker-app/dq-site/ndq-app--external-nginx.conf` вручную (diff + copy). +# вам нужно обновить файл в `/home/user/app/dq-site/config/nginx/dq-app--external-nginx.conf` вручную (diff + copy). +# +# Так же (рядом) будет создан образец этого файла `nginx_dq.conf.example`, который будет обновляться при деплоях +# из репозитория, чтобы вы могли видеть, что изменилось и при необходимости перенести эти изменения на прод. # # Предполагаемая структура на сервере: -# /home/e-serg/docker-app/dq-site/ +# /home/user/app/dq-site/ # ├── docker-compose.yml # ├── .env # ├── media/ <-- Сюда Nginx смотрит напрямую (Docker volume) @@ -65,12 +68,30 @@ server { # Nginx отдает их напрямую с диска хоста, не дергая Docker. # Путь должен совпадать с тем, где лежит volume на хост-машине. # ВАЖНО: Убедитесь, что пользователь nginx (www-data) имеет права на чтение этой папки! + # ТРЕБУЕТСЯ ЗАМЕНА ПРИ ДЕПЛОЕ: /home/user/app/dq-site -> ваш реальный путь location /media/ { - alias /home/e-serg/docker-app/dq-site/media/; + alias /home/user/app/dq-site/media/; expires 30d; # Кешируем картинки на месяц add_header Cache-Control "public, no-transform"; } + # --- СТРАНИЦЫ ОШИБОК (Custom Error Pages) --- + # Если Django упал (502) или файл из media не найден Nginx-ом (404), показываем наши красивые заглушки. + # Файлы копируются в media/errors при старте контейнера. + # ТРЕБУЕТСЯ ЗАМЕНА ПРИ ДЕПЛОЕ: /home/user/app/dq-site -> ваш реальный путь + error_page 404 /404.html; + error_page 500 502 503 504 /500.html; + + location = /404.html { + root /home/user/app/dq-site/media/errors; + internal; + } + + location = /500.html { + root /home/user/app/dq-site/media/errors; + internal; + } + # --- ВСЁ ОСТАЛЬНОЕ (Django + WhiteNoise) --- # Статика (/static/), robots.txt, favicon.ico и сам сайт обрабатываются внутри контейнера. # Nginx просто прокидывает запрос внутрь.