当前位置:论坛首页 > Linux面板 > 求助

【待反馈】《nginx:[emerg]“limit_req”指令不允许》如何解决...

发表在 Linux面板2024-10-17 15:27 [复制链接] 3 284

为了能快速了解并处理您的问题,请提供以下基础信息:
面板、插件版本:

Linux面板稳定版9.0.0Nginx 1.24.0
安装了Nginx免费防火墙 8.3
系统版本:

Debian GNU/Linux 12 (bookworm) x86_64(Py3.7.16)
问题描述:

想限制蜘蛛抓取频率,配置limit_req_zone提示nginx:[emerg]“limit_req”指令不允许
如何解决这个问题???
相关截图(日志、错误):

11.png 22.png 33.png
使用道具 举报 只看该作者 回复
发表于 2024-10-17 16:39:36 | 显示全部楼层
您好,检查一下是不是limit_req指令放置的位置不正确,
正常的话是需要放在http、server、location这些块内

使用道具 举报 回复 支持 反对
发表于 2024-10-17 16:51:38 | 显示全部楼层
运维技术南一 发表于 2024-10-17 16:39
您好,检查一下是不是limit_req指令放置的位置不正确,
正常的话是需要放在http、server、location这些块内 ...
  1.     # 创建 spider_limit 蜘蛛请求限制-start
  2.     limit_req_zone $remote_addr zone=spiderlimit:10m rate=10r/m; # 每分钟10次
  3.     # 创建 spider_limit 蜘蛛请求限制-end
复制代码

我放在nginx配置文件的http{...}字段中
  1.     # 应用 spider_limit 蜘蛛请求限制-start
  2.         location / {
  3.             # 通过 User-Agent 检查设定需要限制的蜘蛛
  4.             if ($http_user_agent ~* (Googlebot|Bingbot|Baiduspider)) {
  5.                 # 限制请求速度,即同一时间只能同时处理5个请求
  6.                 limit_req zone=spiderlimit burst=5 nodelay;
  7.             }
  8.         }
  9.     # 应用 spider_limit 蜘蛛请求限制-end
复制代码

我放在站点配置文件的server{...}字段中,或者添加到站点伪静态规则中,都不行

我使用nginx -V命令查看没有ngx_http_limit_req_module模块,
是不是需要把ngx_http_limit_req_module模块编译进入Nginx里面,
但是需要如何添加编译呢???
使用道具 举报 回复 支持 反对
发表于 2024-11-5 15:35:50 | 显示全部楼层
Woxi 发表于 2024-10-17 16:51
我放在nginx配置文件的http{...}字段中

我放在站点配置文件的server{...}字段中,或者添加到站点伪静态 ...

根据报错提示检查一下
安装模块的话需要把站点文件备份好,然后卸载nginx,重新自定义编译安装nginx
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表