Nginx 默认等待会话关闭,直到打开新的会话。如果用户尝试一次下载多个档案,则会出现问题。
如何禁用或提高限制?
我尝试过的:
changing rate=1r/s to rate=100r/s
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
nginx 配置:
server {
#limit_conn addr 3;
#limit_rate_after 2048k;
#limit_rate 300k;
listen 213.186.127.53:80;
server_name site.com;
access_log off;
#access_log /var/log/nginx/site.com.access.log main;
error_log /var/log/nginx/site.com.error.log crit;
#open_file_cache max=3000 inactive=120s;
#open_file_cache_valid 30s;
#open_file_cache_min_uses 2;
#open_file_cache_errors off;
location / {
valid_referers none blocked site.com *.site2.com site3.net *.prozerpina.net;
if ($invalid_referer) {
return 403;
}
root /var/www/site.com;
aio on;
directio 4k;
directio_alignment 4k;
output_buffers 1 1m;
}
http {
access_log /var/log/nginx/access.log main;
client_max_body_size 2005m;
server_names_hash_bucket_size 64;
client_body_temp_path /tmp;
client_body_in_file_only clean;
# limit_conn_zone $binary_remote_addr zone=addr:10m;
send_timeout 30;
keepalive_timeout 60;
proxy_buffering off;
tcp_nodelay on;
log_not_found on;
tcp_nopush off;
sendfile off;
reset_timedout_connection on;
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
index index.php index.html;
}
答案1
更改rate=1r/s
为rate=100r/s
应该可以工作,除非您的客户端每秒需要超过 100 个请求来下载 2 个文件。通常下载 2 个文件需要 2 个连接。
然而,对我来说,使用速率限制来限制同时连接的数量是使用错误的工具。你有一个叫做limit_conn
它限制连接数,而不是速率。它的工作原理相同,因为您可以为客户端 IP 地址定义区域。然后您决定限制,这是一个原始数字。
再次强调,这是两个不同的问题:连接速率和连接量不应混淆,尽管它们可能会互相干扰。
尝试禁用速率限制并使用连接限制,每个客户端最多 2 个连接。确保您的客户端正常工作。
然后,您可能希望重新安装速率限制,注意不要干扰您的客户端使用。如果您的速率限制较低,您可能希望允许突发连接。然后使用失败连接的日志来了解是否limit_conn
对此limit_req
负责。