← все записи

Минимальный стек для статики на nginx

Для личного сайта с десятком страниц не нужен ни сборщик, ни CMS, ни база данных. Нужны статические файлы и nginx, настроенный так, чтобы отдавать их максимально быстро.

Базовый server block

Минимальная конфигурация выглядит примерно так:

server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    root /var/www/blog;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Сжатие и кеш

Дальше — два пункта, которые дают основной прирост скорости: gzip для текстовых файлов и заголовки кеширования для статики, которая редко меняется.

gzip on;
gzip_types text/css text/html application/javascript;
gzip_min_length 256;

location ~* \.(css|js|svg|woff2)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

Этого достаточно, чтобы страница открывалась практически мгновенно — без CDN и без лишней инфраструктуры.

HTTPS

Сертификат проще всего получить через certbot с автоматическим обновлением — это отдельная тема, но в двух словах: certbot --nginx -d example.com закрывает большинство случаев без ручной возни с конфигом.