nginx:如何允许每个客户端有多个会话

nginx:如何允许每个客户端有多个会话

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/srate=100r/s应该可以工作,除非您的客户端每秒需要超过 100 个请求来下载 2 个文件。通常下载 2 个文件需要 2 个连接。

然而,对我来说,使用速率限制来限制同时连接的数量是使用错误的工具。你有一个叫做limit_conn它限制连接数,而不是速率。它的工作原理相同,因为您可以为客户端 IP 地址定义区域。然后您决定限制,这是一个原始数字。

再次强调,这是两个不同的问题:连接速率和连接量不应混淆,尽管它们可能会互相干扰。

尝试禁用速率限制并使用连接限制,每个客户端最多 2 个连接。确保您的客户端正常工作。

然后,您可能希望重新安装速率限制,注意不要干扰您的客户端使用。如果您的速率限制较低,您可能希望允许突发连接。然后使用失败连接的日志来了解是否limit_conn对此limit_req负责。

相关内容