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;