mod: nginx-конфиг хоста для работы через docker

This commit is contained in:
2026-02-20 13:10:07 +03:00
parent b95fb628b1
commit 4393ff3dad

View File

@@ -3,15 +3,18 @@
# ============================================================================== # ==============================================================================
# #
# ВНИМАНИЕ: # ВНИМАНИЕ:
# Этот файл является шаблоном. При первом деплое он копируется в `~/docker-app/dq-site/ndq-app--external-nginx.conf`, # Этот файл является шаблоном. При первом деплое он копируется в `/home/user/app/dq-site/config/nginx/dq-app--external-nginx.conf`,
# а затем через силинк в `/etc/nginx/sites-available/` и активируется. # а затем (уже руками) через силинк в `/etc/nginx/sites-available/` и активируется.
# При последующих деплоях он НЕ перезаписывается автоматически, чтобы не затереть SSL-сертификаты и ручные правки. # При последующих деплоях он НЕ ПЕРЕЗАПИСЫВАЕТСЯ автоматически, чтобы не затереть 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 # ├── docker-compose.yml
# ├── .env # ├── .env
# ├── media/ <-- Сюда Nginx смотрит напрямую (Docker volume) # ├── media/ <-- Сюда Nginx смотрит напрямую (Docker volume)
@@ -65,12 +68,30 @@ server {
# Nginx отдает их напрямую с диска хоста, не дергая Docker. # Nginx отдает их напрямую с диска хоста, не дергая Docker.
# Путь должен совпадать с тем, где лежит volume на хост-машине. # Путь должен совпадать с тем, где лежит volume на хост-машине.
# ВАЖНО: Убедитесь, что пользователь nginx (www-data) имеет права на чтение этой папки! # ВАЖНО: Убедитесь, что пользователь nginx (www-data) имеет права на чтение этой папки!
# ТРЕБУЕТСЯ ЗАМЕНА ПРИ ДЕПЛОЕ: /home/user/app/dq-site -> ваш реальный путь
location /media/ { location /media/ {
alias /home/e-serg/docker-app/dq-site/media/; alias /home/user/app/dq-site/media/;
expires 30d; # Кешируем картинки на месяц expires 30d; # Кешируем картинки на месяц
add_header Cache-Control "public, no-transform"; 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) --- # --- ВСЁ ОСТАЛЬНОЕ (Django + WhiteNoise) ---
# Статика (/static/), robots.txt, favicon.ico и сам сайт обрабатываются внутри контейнера. # Статика (/static/), robots.txt, favicon.ico и сам сайт обрабатываются внутри контейнера.
# Nginx просто прокидывает запрос внутрь. # Nginx просто прокидывает запрос внутрь.