57 lines
2.8 KiB
Plaintext
57 lines
2.8 KiB
Plaintext
# Описываем группу серверов, куда Nginx будет перекидывать запросы.
|
||
# 'web' — это имя сервиса из нашего docker-compose.yml.
|
||
upstream django_app {
|
||
server web:8000;
|
||
}
|
||
|
||
server {
|
||
# Слушаем стандартный 80-й порт (HTTP).
|
||
listen 80;
|
||
|
||
# Список имен, на которые будет откликаться сервер.
|
||
# Если зайти по другому IP, Nginx может выдать ошибку.
|
||
server_name shiftflow.tertelius.space 192.168.1.108 localhost;
|
||
|
||
# Увеличиваем лимит загрузки (по умолчанию в Nginx всего 1МБ).
|
||
# 100М — чтобы ты мог спокойно грузить тяжелые чертежи или фото станков.
|
||
client_max_body_size 100M;
|
||
|
||
# Включаем Gzip-сжатие. Nginx будет сжимать текстовые файлы перед отправкой,
|
||
# что ускорит загрузку интерфейса, особенно на слабом интернете.
|
||
gzip on;
|
||
gzip_types text/plain text/css application/json application/javascript text/xml;
|
||
|
||
# Главный блок: всё, что не статика, летит в Django.
|
||
location / {
|
||
proxy_pass http://django_app;
|
||
|
||
# Передаем оригинальный домен/IP (нужно для ALLOWED_HOSTS в Django).
|
||
proxy_set_header Host $host;
|
||
# Передаем реальный IP пользователя (чтобы в логах видеть, кто зашел).
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
|
||
# Передаем протокол (http или https).
|
||
# КРИТИЧНО для CSRF защиты, чтобы Django не ругался при входе в админку.
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
|
||
proxy_redirect off;
|
||
}
|
||
|
||
# Раздача статики (CSS, JS, картинки интерфейса).
|
||
# Nginx сам лезет в папку, не беспокоя Django — это очень быстро.
|
||
location /static/ {
|
||
# Путь ВНУТРИ контейнера Nginx (куда мы примонтировали волюм).
|
||
alias /app/staticfiles/;
|
||
# Заставляем браузер кэшировать стили на 30 дней, чтобы не качать их каждый раз.
|
||
expires 30d;
|
||
add_header Cache-Control "public, no-transform";
|
||
}
|
||
|
||
# Раздача медиа-файлов (чертежи, фото продукции).
|
||
location /media/ {
|
||
alias /app/media/;
|
||
expires 30d;
|
||
add_header Cache-Control "public, no-transform";
|
||
}
|
||
} |