nginx 速率限制:未知指令 limit_req_zone

nginx 速率限制:未知指令 limit_req_zone

我正在尝试为使用我的网站的机器人设置速率限制,但如果我添加

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

或任何类似的块,/etc/nginx/nginx.confhttp包含之前我得到

user@srv:~$ sudo service nginx restart
Restarting nginx: nginx: [emerg] unknown directive "limit_req_zone" in /etc/nginx/nginx.conf:11

我不知道为什么会这样或者在哪里可以找到问题......

任何帮助都值得感激!

答案1

你正在使用旧版本的 nginx(<0.7.21)或者ngx_http_limit_req_module模块未编译到您的 nginx 构建中(这有点奇怪)。运行nginx -V 2>&1 | grep --colour=auto limit以检查它是否在构建时被禁用。

答案2

由于您ubuntu的问题中有标签,请尝试使用apt install nginx-full-- 而不是nginx-light,后者是构建的--without-http_limit_req_module

答案3

在我的案例中,位置指令配置语法问题。缺少“区域”一词

http {

    include mime.types;
        limit_req_zone $request_uri zone=test_zone:10m rate=1r/s;

    server {

           listen   443 ssl;
           http2 on;
           server_name  192.168.0.111;
           ssl_certificate /etc/nginx/ssl/self.cert;
           ssl_certificate_key /etc/nginx/ssl/self.key;

           root /bloggingtemplate/;

          # index  index.html index.php;

           location / {
               limit_req zone=test_zone;
              }

nginx -t——检查配置语法是否正确

相关内容