Мой веб-сайт является форумом и имеет 3 типа URL-адресов, как показано ниже:
Просмотр потока:
forum.php? mod = viewthread & tid = 1256 & page = 2
Список потоков:
forum.php? mod = forumdisplay & fid = 125 & page = 61
Показать картинки:
forum.php? mod = вложение & помощь = afklafaklj
Поскольку сейчас на моем веб-сайте много данных и более 10 000 000 потоков, некоторые ребята пытаются замедлить работу моего веб-сайта, обращаясь к сотням страниц списка потоков. Например, они используют 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
. Поэтому мне нужно ограничить подключения по разным параметрам.
Кто-нибудь может помочь? Спасибо.