Боты могут:
location ~* ^/(wp-admin|wp-login|xmlrpc.php|.env|.git) { deny all; return 444; }
Блокирует доступ к популярным целям атак.
if ($http_user_agent ~* (wget|curl|scan|bot|spider|crawler|nikto|sqlmap|nmap)) { return 444; }
Блокирует известные инструменты сканирования.
limit_req_zone $binary_remote_addr zone=flood:10m rate=10r/s; limit_req zone=flood burst=20 nodelay; limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m; limit_conn conn_limit_per_ip 20;
Ограничивает количество запросов с одного IP.
location ~* (\.\.|eval|base64|localhost|127\.0\.0\.1|xmlrpc) { deny all; return 444; }
Защищает от инъекций и подозрительных запросов.
location ~* \.(php|log|htaccess|htpasswd|ini)$ { deny all; }
Блокирует доступ к служебным файлам.
server { listen 80; server_name example.com; # Базовые защиты if ($http_user_agent ~* (bot|crawler|spider)) { return 444; } location ~* ^/(wp-admin|xmlrpc.php) { deny all; } # Ограничение запросов limit_req zone=flood burst=20; # Статика location ~* \.(js|css|png|jpg)$ { expires max; access_log off; } # Запрет исполнения PHP в uploads location ~ ^/uploads/.*\.php$ { deny all; } }
После настройки проверьте логи:
sudo tail -f /var/log/nginx/access.log | grep -E '444|403'
Должны видеть заблокированные запросы.
Внимание: Cтатьи здесь сгенерированы нейросетью, пока не правил ошибки, только запустил его да и не до этого. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я реально делал минимум один раз. Серьёзно.
Сервера стоят, клиенты довольны, дата-центры не горят.
Это не просто копипаста — это опыт, выстраданный в бою, просто пересказанный через ИИ.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах —
вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!