Meu site é um fórum e tem três tipos de URLs, conforme abaixo:
Visualização de tópicos:
forum.php? mod = viewthread & tid = 1256 & página = 2
Lista de tópicos:
forum.php? mod = fórumdisplay & fid = 125 & página = 61
Exibir imagens:
forum.php? mod = anexo e ajuda = afklafaklj
Porque agora meu site tem muitos dados e tem mais de 10.000.000 threads, alguns caras estão tentando diminuir meu website acessando centenas de páginas de lista de threads. Por exemplo, eles usam curl para obter links abaixo ao mesmo tempo:
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
Esse tipo de acesso trará uma pressão extra ao MySQL e atrasará o site.
Por isso, quero adicionar um limite de conexão para esses URLs. 1. Para exibir imagens e visualizar o segmento (tipo 1 e 3), não há limite de conexão; 2. Para lista de tópicos (tipo 2), limitar a 5 por IP.
Eu sei que posso usar limit_conn_zone
e limit_req_zone
para fazer isso. Mas o fato é que todas as minhas URLs estão com forum.php
. Por isso, preciso limitar as conexões com base em parâmetros diferentes.
Alguém pode ajudar? Obrigado.