Điểm:2

Nginx cách tắt giới hạn tốc độ trên mỗi ip

lá cờ cn
Dan

Tôi có một API kết nối thông qua ip riêng của máy chủ EC2 và thực hiện chuỗi gọi lại.Tôi muốn tắt giới hạn tốc độ trên mỗi ip trong trường hợp này. Tôi đã thử phương pháp này trong tài liệu Nginx.

Điều này không giải quyết được giới hạn tốc độ cho vấn đề. Nhật ký truy cập

192.168.192.51 - - [14/Jun/2021:00:09:55 +0530] "POST /project/api/v1/vendor/callback HTTP/1.1" 429 8576 "-" "Java/1.8.0_151" "- " "192.168.13.173" sn="192.168.13.173" rt=0.009 ua="unix:/var/run/php/php7.4-fpm.sock" us="429" ut="0.008" ul="8591 " cs=-

Tệp conf Nginx

dữ liệu www của người dùng;
worker_processes tự động;
pid /run/nginx.pid;
bao gồm /etc/nginx/modules-enabled/*.conf;

sự kiện {
    công_nhân kết_nối 1024 ;
    # đa_chấp vào ;
}

http {

    địa lý $limit {
        mặc định 1;
        192.168.192.51 0;
    }
 
    bản đồ $limit $limit_key {
            0"";
            1 $binary_remote_addr;
    }
 
    limit_req_zone $limit_key zone=req_zone:10m rate=100r/s;

    ##
    # Cài đặt cơ bản
    ##

    gửi tệp trên;
    bật tcp_nopus;
    bật tcp_nodelay;
    keepalive_timeout 65;
    loại_hash_max_size 2048;
    # server_token tắt;

    # server_name_hash_bucket_size 64;
    # máy chủ_tên_trong_chuyển hướng tắt;

    bao gồm /etc/nginx/mime.types;
    ứng dụng default_type/octet-stream;

    ##
    # Cài đặt SSL
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Bỏ SSLv3, tham khảo: POODLE
    bật ssl_prefer_server_ciphers;

    ##
    # Cài đặt ghi nhật ký
    ##

    error_log /var/log/nginx/error.log cảnh báo;
    log_format main_ext '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" ' '"$host" sn="$server_name" ' ' rt=$request_time ' 'ua="$upstream_addr" us="$upstream_status" ' 'ut="$upstream_response_time" ul="$upstream_response_length" ' 'cs=$upstream_cache_status' ;
    access_log /var/log/nginx/access.log main_ext;

    ##
    # Cài đặt Gzip
    ##

    bật gzip;

    # gzip_vary bật;
    # gzip_proxied bất kỳ;
    # gzip_comp_cấp 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/văn bản javascript/ứng dụng xml/ứng dụng xml/xml+văn bản rss/javascript;

    ##
    # Cấu hình máy chủ ảo
    ##

    bao gồm /etc/nginx/conf.d/*.conf;
    bao gồm /etc/nginx/sites-enabled/*;

    fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_connect_timeout 90;
        fastcgi_send_timeout 90;
        fastcgi_read_timeout 90;
}

Khối máy chủ

người phục vụ {
    nghe 80;
    nghe 81;

        gốc/dữ liệu/www;

        chỉ mục index.html index.htm index.php;

        server_name 192.168.13.173;


        địa điểm / {
                try_files $uri $uri/ /index.php$is_args$args;
        }

    địa điểm/dự án{
                bí danh/dữ liệu/www/dự án/công khai;
                try_files $uri $uri/ @project;

                vị trí ~ \.php$ {
                        bao gồm đoạn trích/fastcgi-php.conf;
                        fastcgi_param SCRIPT_FILENAME $request_filename;
                        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
                }
        }

        vị trí @dự án {
                viết lại /project/(.*)$ /project/index.php?/$1 cuối cùng;
        }


    vị trí ~ \.php$ {
                bao gồm đoạn trích/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        vị trí ~ /\.ht {
                Phủ nhận tất cả;
        }


}
djdomi avatar
lá cờ za
Nếu Máy chủ của bạn Bận, đó là một Phản ứng bình thường, bạn đã thử `worker_connections 10240;` (giá trị 10x), tuy nhiên, hãy tìm https://www.nginx.com/blog/rate-limiting-nginx/ một số vôi có thể có một số loại ẩn
djdomi avatar
lá cờ za
Tuy nhiên, vì rất nhiều lệnh gọi API có thể được lưu vào bộ đệm, tôi khuyên bạn nên xem qua `set $memcached_key "$uri?$args"; memcached_pass máy chủ: 11211; ` nó cũng có thể cải thiện máy chủ của bạn;) cần có memcached đã cài đặt để sử dụng cái này
Dan avatar
lá cờ cn
Dan
Cảm ơn, nhưng tôi nghĩ có gì đó không ổn với cách tiếp cận này. Không có một thay đổi nào ngay cả sau khi tôi đã thêm danh sách trắng giới hạn tỷ lệ này. Vì vậy, tôi cho rằng tôi đang thiếu một cái gì đó ở đây?
lá cờ sv
Theo nhật ký truy cập được cung cấp trong OP, mã trạng thái được hiển thị là 429 (Quá nhiều yêu cầu). Tuy nhiên, Nginx theo mặc định sẽ gửi 503. Tham khảo: https://nginx.org/r/limit_req_status Giới hạn tốc độ chỉ có hiệu lực trong Nginx nếu cả `limit_req_zone` và `limit_req` được định cấu hình. Cấu hình của bạn thiếu chỉ thị `limit_req`. Tôi đoán là giới hạn tốc độ không hiệu quả trong Nginx hoặc bạn chưa cung cấp cấu hình đầy đủ. Vui lòng xem cấu hình mẫu cho trường hợp sử dụng của bạn... https://www.nginx.com/blog/rate-limiting-nginx/#Advanced-Configuration-Examples
Dan avatar
lá cờ cn
Dan
Bạn đúng @PothiKalimuthu, cái này không được tạo từ Nginx. Điều này đã được áp dụng từ mã (Laravel Framework). Tôi đã bỏ lỡ dẫn đầu bởi nhật ký truy cập. Tôi nghĩ điều này được tạo ra từ Nginx bằng cách xem nhật ký truy cập

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.