Из-за чего не работает защита?
Ссылка скопирована
Сейчас ситуация такая: я новичок в nginx. В процессе заливания маленького проекта на VDS захотел ограничить количество запросов в секунду, чтобы сервер не падал. Написал конфиг, представленный ниже, однако код на python (тоже снизу) не выдаёт ошибки о перегрузке сервиса.
# Редирект с HTTP на HTTPS server { listen 80; server_name example.ru www.example.ru; return 301 https://$host$request_uri; } limit_req_zone $http_your_auth_token zone=mylimit:10m rate=30r/s; # HTTPS сервер server { listen 443 ssl; server_name example.ru www.example.ru; # SSL сертификаты ssl_certificate /etc/nginx/certs/fullchain.pem; ssl_certificate_key /etc/nginx/certs/privkey.key; # Базовые SSL настройки ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # Логи (опционально) access_log /var/log/nginx/backend_access.log; error_log /var/log/nginx/backend_error.log; location / { limit_req zone=mylimit burst=1 nodelay; proxy_pass http://service:8080; # Заголовки для backend proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Таймауты proxy_connect_timeout 60s; proxy_read_timeout 60s; } }
from requests import get import warnings from urllib3.exceptions import InsecureRequestWarning # Отключаем предупреждения о небезопасных запросах warnings.simplefilter('ignore', InsecureRequestWarning) for i in range(1000): res = get("https://localhost/sight/", verify=False) print(res.status_code)
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
VPN
Почему не работает связка 3X-UI на своем VPS и Necobox на Windows 10 и где искать причину?
1 ответ

Если “защита” в Nginx не работает, сначала нужно уточнить, какая именно защита имеется в виду: basic auth, ограничение по IP, rate limit, deny/allow, защита директории, запрет доступа к файлам или reverse proxy auth. В Nginx порядок location и наследование директив часто важнее самой директивы защиты.
Начните с проверки итоговой конфигурации:
nginx -t nginx -T | less
nginx -Tпоказывает весь конфиг с include-файлами. Часто оказывается, что защита прописана в одном server/location, а запрос реально попадает в другой.Если это basic auth, минимальная схема такая:
location /admin/ { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; }
Проверьте права на
.htpasswdи что Nginx worker может его читать. Если файл недоступен, в error.log будет подсказка.Если защита по IP, учитывайте reverse proxy/CDN. При Cloudflare или другом прокси Nginx видит IP прокси, а не реального клиента. Тогда правила
allow/denyнужно строить после правильной настройки real_ip:set_real_ip_from 173.245.48.0/20; real_ip_header CF-Connecting-IP;
Если защита не применяется к PHP/WordPress, проверьте location precedence: запрос может попадать в
location ~ .php$, где нужных директив нет. Иногда защиту нужно вынести выше или продублировать в нужном location.Итог: смотрите итоговый конфиг, реальный location, error.log/access.log и наличие прокси. В Nginx директива может быть правильной, но не работать, если запрос обслуживает другой server block или regex-location перекрывает обычный location.