# --- ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ ---
# sendfile on;  # можно включить для больших статик файлов, но для контейнера избыточно
tcp_nopush on;  # отправляй данные только когда буфер полон (меньше пакетов)
tcp_nodelay on; # не жди, отправляй сразу (для low-latency интеракции)
# keepalive_timeout 65;  # по умолчанию работает, фреймовый сайт не требует особого тюнинга
types_hash_max_size 2048;  # размер хэша для mime.types

# MIME-типы и кодировка по умолчанию
include /etc/nginx/mime.types;
# default_type application/octet-stream;  # оставляю по умолчанию

# Настройки логов (stdout/stderr для docker logs)
access_log /dev/stdout;  # вывод в stdout контейнера (видно через docker logs)
error_log /dev/stderr warn;  # ошибки в stderr

# Настройки сжатия gzip (для экономии трафика между контейнером и внешним nginx)
gzip on;  # включаем сжатие
gzip_proxied any;  # сжимаем, даже если запрос идет через прокси
gzip_comp_level 6;  # уровень сжатия (6 = хороший баланс между CPU и ratio)
gzip_buffers 16 8k;  # буферы для сжатия (16 буферов по 8к)
gzip_http_version 1.1;  # поддерживаем gzip с HTTP/1.1+
gzip_disable "msie6";  # не сжимаем для IE6 (исторический артефакт, но оставляю)
gzip_vary  on;  # добавляем Vary: Accept-Encoding в response (важно для кешей)
gzip_min_length 512;  # сжимаем только если больше 512 байт (меньше — толку нет)
gzip_types text/plain  # какие MIME-типы сжимать
           text/css
           application/json
           application/x-javascript
           text/xml application/xml
           application/xml+rss
           text/javascript
           application/javascript
           application/vnd.ms-fontobject
           application/x-font-ttf
           font/opentype
           image/svg+xml
           image/x-icon;

# --- КОНФИГУРАЦИЯ СЕРВЕРА ---
server {
    listen 80 default_server;  # слушаем по умолчанию на порте 80 внутри контейнера
    listen [::]:80;  # поддержка IPv6
    server_name _;  # принимаем любое имя хоста (внутренний контейнер)

    root /usr/share/nginx/html;  # корень для статических файлов (монтируется снаружи)
    index index.htm index1.htm index.html;  # приоритет индексов (index.htm для KOI8-R)

    charset koi8-r;  # отправляем charset=koi8-r в Content-Type заголовке
    source_charset koi8-r;  # исходная кодировка файлов на диске

    client_max_body_size 50M;  # максимальный размер тела запроса (для загрузок)

    # Корневой путь → явно на index.htm (для фреймовой структуры)
    location = / {
        try_files /index.htm =404;
    }

    # Все остальные пути → статические файлы как есть
    location / {
        try_files $uri $uri/ =404;
    }

    # Обработчики ошибок (если они есть в корне html/)
    error_page 404 /404.html;
    error_page 500 /500.html;

    # Внутренние редиректы (не возвращаем клиенту, только используем для error_page)
    location = /404.html {
        internal;
    }

    location = /500.html {
        internal;
    }
}
