我的 Apache2 Web 服务器有问题。我有一个网站工作了一段时间,但现在发送到服务器的每个请求都有重复,并且第一个请求对用户根本不可见。我可以使用 Django 中间件使用数据库事务暂时修补此问题,仅返回第二个请求的响应,但该软件仍然在日志中显示重复的请求,发送到服务器的每个 GET 和 POST 请求都有一个重复的对应项。
我尝试了我发现的一个建议,使用modsecurity2,但它似乎不起作用,它仍然允许重复的请求通过。解决方案如下。
SecRule USER:duplicaterequest "@gt 1" "id:'40000',phase:2,deny,status:409,msg:'Duplicate Request!'"
请求相隔约 2 秒,这会导致重复对象的各种问题,并且似乎还会使页面加载时间更长。
这发生在几周前的一夜之间,代码没有任何更改。知道这可能是什么,或者解决它的方法吗?
我不确定我是否完全理解您的问题,但如果客户发送请求两次,则问题就在那里。也不确定这是否应该用 ModSecurity 来解决。
您的规则使用
USER
持久集合作为目标。仅当您设置该变量BEFORE时,匹配集合变量才有意义。
如果没有其他规则填充此变量(基于某些条件),那么这将永远不会匹配。在哪里设置
USER:duplicaterequest
以及如何设置?在这种情况下您想拒绝该请求吗?