如题,我想给我的图床配置以小时计算的速率限制
- 因为用分钟计算,限量太少了总是把自己笔记的访问给挡住
- 配置太多了又起不到防止脚本刷流的作用
我在nginx.conf
里面是这么编写的
# 限制请求速率
limit_conn_zone $binary_remote_addr zone=addr:10m;# 限制请求处理的内存大小
limit_req_zone $binary_remote_addr zone=one:10m rate=320r/m; # 限制请求处理的内存大小和请求速率限制
在图床server的配置文件中这样引用。目前一切正常,速率限制也能生效
location / {
limit_req zone=one burst=5 delay=600;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header Upgrade-Insecure-Requests 1;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://127.0.0.1:14000;
}
我问了gpt,速率限制是可以写成按小时计算的(以下为gpt3的回答)
在nginx中,速率限制可以有以下格式:
1. rate=1r/s; # 每秒限制1个请求
2. rate=10r/m; # 每分钟限制10个请求
3. rate=100r/h; # 每小时限制100个请求
4. rate=500r/d; # 每天限制500个请求
其中,r/s表示每秒,r/m表示每分钟,r/h表示每小时,r/d表示每天。还可以在限制数量前面添加标识符k、m、g,表示千、百万、十亿等级的限制数量。例如,rate=10m/s表示每秒限制10百万个请求。
但当我把nginx.conf
里面的速率限制由rate=320r/m
改为rate=3200r/h
的时候,就无法正常加载nginx了!
$ systemctl restart nginx
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
$ systemctl status nginx.service
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2023-04-17 14:42:15 CST; 4s ago
Process: 11784 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 14384 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=1/FAILURE)
Process: 14382 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 11786 (code=exited, status=0/SUCCESS)
Apr 17 14:42:15 bt-7274 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Apr 17 14:42:15 bt-7274 nginx[14384]: nginx: [emerg] invalid rate "rate=3200r/h" in /etc/nginx/nginx.conf:35
Apr 17 14:42:15 bt-7274 nginx[14384]: nginx: configuration file /etc/nginx/nginx.conf test failed
Apr 17 14:42:15 bt-7274 systemd[1]: nginx.service: control process exited, code=exited status=1
Apr 17 14:42:15 bt-7274 systemd[1]: Failed to start The nginx HTTP and reverse proxy server.
Apr 17 14:42:15 bt-7274 systemd[1]: Unit nginx.service entered failed state.
Apr 17 14:42:15 bt-7274 systemd[1]: nginx.service failed.
求助,为什么?
系统 CentOS7.6,nginx为yum安装
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html#...
官方文档没看到h的配置