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 просто прокидывает запрос внутрь.