nginx ограничивает соединения на основе параметров
Мой сайт является форумом, и у него есть 3 типа URL, как показано ниже:
Просмотр темы:
forum.php? мод =viewthread& TID =1256& страница =2
Список тем:
forum.php? мод =forumdisplay& FID =125& страница =61
Показывать картинки:
forum.php? моды = прикрепления и помощь =afklafaklj
Поскольку сейчас на моем веб-сайте много данных и более 10000000 потоков, некоторые ребята пытаются замедлить мой сайт, открыв сотни страниц со списком потоков. Например, они используют curl, чтобы получить ссылки ниже:
forum.php?mod=forumdisplay&fid=1&orderby=replies&filter=reply&orderby=replies&page=600
forum.php?mod=forumdisplay&fid=1&orderby=replies&filter=reply&orderby=replies&page=7000
forum.php?mod=forumdisplay&fid=1&orderby=replies&filter=reply&orderby=replies&page=869
forum.php?mod=forumdisplay&fid=1&orderby=replies&filter=reply&orderby=replies&page=10000
Подобный доступ создаст дополнительную нагрузку на MySQL и замедлит работу сайта.
Поэтому я хочу добавить ограничение на соединение для этих URL. 1. Для отображения изображений и просмотра темы (тип 1 и 3), без ограничения подключения; 2. Для списка потоков (тип 2), ограничение до 5 на IP.
Я знаю, что я могу использовать limit_conn_zone
а также limit_req_zone
сделать это. Но дело в том, что все мои URL начинаются с forum.php
, Поэтому мне нужно ограничить соединения на основе разных параметров.
Кто-нибудь может помочь? Благодарю.