nginx根据参数限制连接数

nginx根据参数限制连接数

我的网站是一个论坛,它有以下 3 种类型的 URL:

  1. 主题视图:

    forum.php?mod=viewthread&tid=1256&page=2

  2. 主题列表:

    forum.php?mod=forumdisplay&fid=125&page=61

  3. 显示图片:

    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_zonelimit_req_zone来做到这一点。但问题是我的所有 URL 都以 开头forum.php。所以我需要根据不同的参数来限制连接。

有人能帮忙吗?谢谢。

相关内容