Защита от ДДОС в Nginx

В данной статье я приведу пример конфигурации nginx для кеширования FastCGI-запросов. При желании его можно использовать его для защиты от хабраэффекта, частично от DDoS’а и, как вариант, для облегчения жизни сервера с высокой нагрузкой.

В секции «http» объявляем кеш-зону fastcgi_cache, с хранением кеша в папке /tmp/nginx с 2 уровнями вложенности, с максимальным размером 256Мб и кешем ключей 16Мб (неиспользуемые более 1 дня объекты будут автоматически удаляться):

Далее, в секции «server» правим соответствующий location:

# Стандартная конфигурация для php

# Необходимо для передачи cookie в соответствующие переменные, например cookie с именем phpsessid будет находится в переменной $cookie_phpsessid

# Игнорируем заголовки, относящиеся к кешированию, полученные от FastCGI-сервера

# Формируем уникальный ключ; в данном случае различаем пользователей с помощью $cookie_phpsessid

# Говорим о том, что использовать надо вышеобъявленную кеш-зону fastcgi_cache

# Указываем папку для хранения временных файлов

# Используем вариант из кеша (даже если он устарел) в случае ошибки

# Время жизни кеша для ответов 200, 301 & 302

# Таким образом можно закешировать любые ответы

Конфиг опробован на nginx версии >= 0.7.60 (на => 0.8.1 должен работать, но не тестировался).

Документация: Директивы модуля ngx_http_fastcgi_module, Changelog.

upd: Если не игнорировать заголовки Cache-Control и Expires, nginx ведёт себя соответственно их содержанию (что, в принципе, логично).

Рейтинг материала
[Голосов: 0 Рейтинг: 0]
20 декабря 2014, 15:15

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *