nginx для статического сайта: оптимальный конфиг с кешированием и gzip

Оптимальный конфиг nginx для статического сайта сокращает TTFB до ≤50ms и размер передаваемых данных на 70% через gzip/brotli сжатие. Ниже — готовый конфиг с кешированием, сжатием и security headers.

Быстрый старт

Скопируйте конфиг ниже в /etc/nginx/sites-available/site.conf, замените your-domain.com и /var/www/site на свои значения.

server {
    listen 443 ssl http2;
    server_name your-domain.com;
    root /var/www/site/current;
    index index.html;
    gzip on;
    gzip_types text/css application/javascript image/svg+xml;
    location / {
        try_files $uri $uri/ =404;
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

Security Headers

Добавьте CSP, HSTS, X-Frame-Options для защиты. Для GitHub CMS с Tinkoff добавьте tbank.ru и tinkoff.ru в script-src.

FAQ

Как проверить конфиг nginx?

Ответ: nginx -t проверяет синтаксис. curl -I https://your-domain.com показывает заголовки ответа. Google PageSpeed Insights измеряет TTFB.