nginx: làm thế nào để cho phép nhiều hơn một phiên cho mỗi khách hàng


1

Nginx theo mặc định chờ phiên đóng cửa cho đến khi mở phiên mới. đây là một vấn đề nếu người dùng cố tải xuống nhiều hơn một kho lưu trữ cùng một lúc.

Làm thế nào để vô hiệu hóa hoặc vượt quá giới hạn?

những gì tôi đã thử:

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

nginx conf:

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;

}

Câu trả lời:


0

Thay đổi rate=1r/sthành rate=100r/ssẽ hoạt động, trừ khi khách hàng của bạn cần hơn 100 yêu cầu mỗi giây để tải xuống 2 tệp. Thông thường tải xuống 2 tập tin yêu cầu 2 kết nối.

Tuy nhiên, với tôi sử dụng giới hạn tốc độ để giới hạn số lượng kết nối đồng thời đang sử dụng công cụ sai. Bạn có một cái gì đó gọi là limit_conngiới hạn kết nối, không phải giá. Nó hoạt động theo cùng một cách, vì bạn có thể xác định vùng cho các địa chỉ IP của máy khách. Sau đó, bạn quyết định giới hạn, đó là một số nguyên.

Một lần nữa, đó là 2 vấn đề khác nhau: tốc độ và số lượng kết nối không bị nhầm lẫn, mặc dù chúng có thể gây trở ngại cho nhau.

Hãy thử vô hiệu hóa giới hạn tốc độ và sử dụng giới hạn kết nối với 2 kết nối cho mỗi khách hàng. Đảm bảo khách hàng của bạn hoạt động đúng.

Sau đó, bạn có thể muốn cài đặt lại giới hạn tỷ lệ, cẩn thận rằng nó không can thiệp vào việc sử dụng máy khách của bạn. Bạn có thể muốn cho phép kết nối bùng nổ nếu giới hạn tốc độ của bạn thấp. Sử dụng sau đó ghi lại các kết nối thất bại trong việc biết nếu một trong hai limit_connhoặc limit_reqlà giữ trách nhiệm về nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.