mod: защита от DoS-атак на уровне nbinx

This commit is contained in:
2026-01-22 11:26:12 +03:00
parent 2d09aef79d
commit ef8a2d27ff
2 changed files with 21 additions and 5 deletions

View File

@@ -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/ {

View File

@@ -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;