nginx ограничивает соединения на основе параметров

Мой сайт является форумом, и у него есть 3 типа URL, как показано ниже:

  1. Просмотр темы:

    forum.php? мод =viewthread& TID =1256& страница =2

  2. Список тем:

    forum.php? мод =forumdisplay& FID =125& страница =61

  3. Показывать картинки:

    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, Поэтому мне нужно ограничить соединения на основе разных параметров.

Кто-нибудь может помочь? Благодарю.

0 ответов

Другие вопросы по тегам