mod: защита от DoS-атак на уровне nbinx
This commit is contained in:
@@ -8,9 +8,13 @@ server {
|
|||||||
access_log /var/log/nginx/typograph.access.log;
|
access_log /var/log/nginx/typograph.access.log;
|
||||||
error_log /var/log/nginx/typograph.error.log;
|
error_log /var/log/nginx/typograph.error.log;
|
||||||
|
|
||||||
# SSL-сертификаты
|
# SSL-сертификаты (их добавит Let's Encrypt)
|
||||||
|
|
||||||
# Рекомендуемые SSL настройки
|
# Рекомендуемые SSL настройки (
|
||||||
|
|
||||||
|
# --- ЗАЩИТА ОТ БОЛЬШИХ ЗАПРОСОВ ---
|
||||||
|
# Ограничиваем максимальный размер тела запроса (например, 1MB)
|
||||||
|
client_max_body_size 1M;
|
||||||
|
|
||||||
# Медиа файлы (загруженные пользователями)
|
# Медиа файлы (загруженные пользователями)
|
||||||
location /media/ {
|
location /media/ {
|
||||||
|
|||||||
@@ -35,7 +35,12 @@ http {
|
|||||||
access_log /dev/stdout;
|
access_log /dev/stdout;
|
||||||
error_log /dev/stderr warn;
|
error_log /dev/stderr warn;
|
||||||
|
|
||||||
# Настройки сжатия gzip для оптимизации передачи данных (сжимать будет nginx внутри контейнера)
|
# --- ЗАЩИТА ОТ БРУТФОРСА ---
|
||||||
|
# Создаем зону в памяти, где будут храниться IP-адреса (1MB -- 16000 IP).
|
||||||
|
# rate=5r/s - разрешаем 5 запросов в секунду (мягкий лимит).
|
||||||
|
limit_req_zone $binary_remote_addr zone=one:1m rate=5r/s;
|
||||||
|
|
||||||
|
# Настройки сжатия gzip
|
||||||
gzip on;
|
gzip on;
|
||||||
gzip_proxied any;
|
gzip_proxied any;
|
||||||
gzip_comp_level 6;
|
gzip_comp_level 6;
|
||||||
@@ -59,8 +64,11 @@ http {
|
|||||||
# Убираем токены версии nginx для безопасности
|
# Убираем токены версии nginx для безопасности
|
||||||
server_tokens off;
|
server_tokens off;
|
||||||
|
|
||||||
# Прямая раздача favicon.ico (для поисковиков и браузеров)
|
# --- ЗАЩИТА ОТ БОЛЬШИХ ЗАПРОСОВ ---
|
||||||
# Это быстрее и надежнее, чем редирект через Django
|
# Ограничиваем максимальный размер тела запроса (например, 1MB)
|
||||||
|
client_max_body_size 1M;
|
||||||
|
|
||||||
|
# Прямая раздача favicon.ico
|
||||||
location = /favicon.ico {
|
location = /favicon.ico {
|
||||||
alias /app/public/static_collected/favicon.ico;
|
alias /app/public/static_collected/favicon.ico;
|
||||||
access_log off;
|
access_log off;
|
||||||
@@ -69,6 +77,10 @@ http {
|
|||||||
}
|
}
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
|
# --- ЗАЩИТА ОТ БРУТФОРСА ---
|
||||||
|
# Применяем зону 'one', разрешаем "всплеск" до 10 запросов.
|
||||||
|
limit_req zone=one burst=10 nodelay;
|
||||||
|
|
||||||
proxy_pass http://app_server;
|
proxy_pass http://app_server;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
|
|||||||
Reference in New Issue
Block a user