Nginx hardening для маленького блога: что включить без фанатизма
Безопасность маленького сайта — это не только WAF, а аккуратные заголовки, запреты и лимиты.
Маленький блог не становится безопасным только потому, что он статичный. Да, площадь атаки меньше, чем у большого приложения, но nginx все равно стоит на публичном IP, принимает трафик и обслуживает админку.
Что имеет смысл включить
Базовый набор:
X-Content-Type-Options: nosniff;- разумный
Referrer-Policy; - HSTS, если HTTPS стабилен;
- запрет PHP вне админки;
no-storeдля админских страниц;noindexдля админки и служебного JSON;- rate limit на админку;
- запрет
.env,.git, backup и config-файлов.
Это не делает сайт неуязвимым, но закрывает типовые глупые дырки.
Где легко переборщить
Самый частый пример — слишком жесткий X-Frame-Options или CSP на публичной части. Для обычного сайта это может быть нормально, но если подключается AdSense preview, сторонние виджеты или embeds, такие заголовки ломают легитимные сценарии.
Поэтому подход простой: публичную часть защищать без поломки интеграций, админку — максимально жестко.
Rate limit и Cloudflare
Если сайт за Cloudflare, важно понимать, по какому IP лимитировать. Иначе можно случайно лимитировать всех посетителей по IP Cloudflare edge. Лучше использовать заголовок реального клиента только если origin не доступен напрямую или если доверие к Cloudflare настроено явно.
Вывод
Хороший hardening — это не список всех возможных заголовков, а баланс. Для блога важнее закрыть админку, служебные файлы и очевидные ошибки, чем включить CSP, который потом ломает рекламу и предпросмотры.