我的网站是一个论坛,它有以下 3 种类型的 URL:
主题视图:
forum.php?mod=viewthread&tid=1256&page=2
主题列表:
forum.php?mod=forumdisplay&fid=125&page=61
显示图片:
forum.php?mod=attachment&aid=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),每个IP限制为5个。
我知道我可以使用limit_conn_zone
和limit_req_zone
来做到这一点。但问题是我的所有 URL 都以 开头forum.php
。所以我需要根据不同的参数来限制连接。
有人能帮忙吗?谢谢。