# --- ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ --- # 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; } }