我正在尝试为使用我的网站的机器人设置速率限制,但如果我添加
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
或任何类似的块,/etc/nginx/nginx.conf
在http
包含之前我得到
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——检查配置语法是否正确