From ef8a2d27ffd3370a5cc0b639c28b17aee252d13d Mon Sep 17 00:00:00 2001 From: erjemin Date: Thu, 22 Jan 2026 11:26:12 +0300 Subject: [PATCH] =?UTF-8?q?mod:=20=D0=B7=D0=B0=D1=89=D0=B8=D1=82=D0=B0=20?= =?UTF-8?q?=D0=BE=D1=82=20DoS-=D0=B0=D1=82=D0=B0=D0=BA=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=83=D1=80=D0=BE=D0=B2=D0=BD=D0=B5=20nbinx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/nginx/etpgrf--external-nginx.conf | 8 ++++++-- config/nginx/etpgrf--internal-nginx.conf | 18 +++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/config/nginx/etpgrf--external-nginx.conf b/config/nginx/etpgrf--external-nginx.conf index 0323635..ad0ed20 100644 --- a/config/nginx/etpgrf--external-nginx.conf +++ b/config/nginx/etpgrf--external-nginx.conf @@ -8,9 +8,13 @@ server { access_log /var/log/nginx/typograph.access.log; error_log /var/log/nginx/typograph.error.log; - # SSL-сертификаты + # SSL-сертификаты (их добавит Let's Encrypt) - # Рекомендуемые SSL настройки + # Рекомендуемые SSL настройки ( + + # --- ЗАЩИТА ОТ БОЛЬШИХ ЗАПРОСОВ --- + # Ограничиваем максимальный размер тела запроса (например, 1MB) + client_max_body_size 1M; # Медиа файлы (загруженные пользователями) location /media/ { diff --git a/config/nginx/etpgrf--internal-nginx.conf b/config/nginx/etpgrf--internal-nginx.conf index 606dcd2..b9274bd 100644 --- a/config/nginx/etpgrf--internal-nginx.conf +++ b/config/nginx/etpgrf--internal-nginx.conf @@ -35,7 +35,12 @@ http { access_log /dev/stdout; 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_proxied any; gzip_comp_level 6; @@ -59,8 +64,11 @@ http { # Убираем токены версии nginx для безопасности server_tokens off; - # Прямая раздача favicon.ico (для поисковиков и браузеров) - # Это быстрее и надежнее, чем редирект через Django + # --- ЗАЩИТА ОТ БОЛЬШИХ ЗАПРОСОВ --- + # Ограничиваем максимальный размер тела запроса (например, 1MB) + client_max_body_size 1M; + + # Прямая раздача favicon.ico location = /favicon.ico { alias /app/public/static_collected/favicon.ico; access_log off; @@ -69,6 +77,10 @@ http { } location / { + # --- ЗАЩИТА ОТ БРУТФОРСА --- + # Применяем зону 'one', разрешаем "всплеск" до 10 запросов. + limit_req zone=one burst=10 nodelay; + proxy_pass http://app_server; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host;