찾다
운영 및 유지보수엔진스Nginx 제한 요청 속도 구성을 구현하는 방법

Nginx 제한 요청 속도 구성을 구현하는 방법

Nginx 제한 요청 속도 구성 구현 방법

Nginx는 구성을 통해 요청을 제한하고 제어할 수 있는 고성능 웹 서버입니다. 실제 애플리케이션에서는 서버 리소스를 보호하기 위해 요청 속도를 제한해야 하는 경우가 많습니다. 이 기사에서는 Nginx에서 요청 속도 제한을 구현하는 방법을 소개합니다.

1. HttpLimitReqModule 모듈 사용

Nginx는 요청 속도를 제한하는 데 사용할 수 있는 HttpLimitReqModule 모듈을 제공합니다. 구성을 시작하기 전에 HttpLimitReqModule 모듈이 설치되었는지 확인해야 합니다.

  1. Nginx 구성 파일 편집

Nginx 구성 파일(일반적으로 /etc/nginx/nginx.conf에 있음)을 열고 http 섹션을 찾아 다음 구성을 추가합니다.

http {
    ...
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

    server {
        ...
    }
}

limit_req_zone은 이름을 정의하는 데 사용되며 제한 영역의 크기, $binary_remote_addr은 클라이언트의 IP 주소를 제한 키워드로 사용함을 나타냅니다. zone=one:10m은 10MB 크기의 제한된 영역을 사용한다는 의미입니다. rate=1r/s는 요청 속도가 초당 1로 제한됨을 의미합니다.

  1. 요청 제한 구성

요청 제한이 필요한 경우 제한_req 지시문을 추가하여 요청 속도를 제한하세요. 예를 들어 요청 속도를 초당 10개 요청으로 제한하려면 다음 구성을 서버 세그먼트에 추가할 수 있습니다.

location / {
    limit_req zone=one burst=5;
    ...
}

limit_req 지시어는 요청 제한을 적용하는 데 사용되며, zone 매개 변수는 사용되는 제한 영역의 이름을 지정합니다. 그리고 버스트 매개변수는 동시에 처리되는 요청 수를 지정합니다. 위 구성은 요청 수가 초당 10개를 초과하면 503 오류가 반환됨을 나타냅니다.

  1. Nginx 구성 다시 로드

구성을 완료한 후 Nginx 구성을 다시 로드해야 적용됩니다. 다음 명령을 사용하여 구성을 확인하고 다시 로드할 수 있습니다.

$ nginx -t    # 检查配置是否正确
$ nginx -s reload    # 重新加载配置

2. ngx_http_limit_req_module 모듈을 사용하세요.

HttpLimitReqModule 모듈 외에도 ngx_http_limit_req_module 모듈을 사용하여 요청 속도를 제한할 수도 있습니다. 이 모듈은 보다 유연한 구성 옵션을 제공합니다.

  1. Nginx 구성 파일 편집

Nginx 구성 파일을 열고 http 세그먼트를 찾은 후 다음 구성을 추가하세요.

http {
    ...
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    
    server {
        ...
    }
}

이 구성은 HttpLimitReqModule 모듈과 동일하며 크기가 1로 명명된 제한 영역을 정의합니다. 요청 속도는 1/초로 제한됩니다.

  1. 요청 제한 구성

요청 제한이 필요한 경우 제한_req 지시문을 추가하여 요청 속도를 제한하세요. 예를 들어 요청 속도를 초당 10개 요청으로 제한하려면 다음 구성을 서버 세그먼트에 추가할 수 있습니다.

location / {
    limit_req zone=one burst=5;
    ...
}

limit_req 지시어는 요청 제한을 적용하는 데 사용되며, zone 매개 변수는 사용되는 제한 영역의 이름을 지정합니다. 그리고 버스트 매개변수는 동시에 처리되는 요청 수를 지정합니다.

  1. Nginx 구성 다시 로드

구성을 완료한 후 Nginx 구성을 다시 로드해야 적용됩니다. 다음 명령을 사용하여 구성을 확인하고 다시 로드할 수 있습니다.

$ nginx -t    # 检查配置是否正确
$ nginx -s reload    # 重新加载配置

3. lua 스크립트를 사용하여 요청 제한 확장

Nginx는 요청 제한을 확장하기 위해 lua 스크립트 사용도 지원합니다. 사용자 정의 Lua 스크립트를 작성하면 보다 유연하고 복잡한 요청 제한 전략을 구현할 수 있습니다.

  1. Lua 모듈 설치

먼저 Nginx Lua 모듈이 설치되어 있는지 확인해야 합니다.

  1. 루아 스크립트 작성

Nginx 구성 파일에 다음 구성을 추가하세요.

http {
    ...
    lua_shared_dict limit_req_store 10m;
    
    server {
        ...
        
        location / {
            access_by_lua_block {
                local limit_req = require "resty.limit.req"
                local lim, err = limit_req.new("limit_req_store", 1, 1)
                if not lim then
                    ngx.log(ngx.ERR, "failed to instantiate a resty.limit.req object: ", err)
                    return ngx.exit(500)
                end
                local key = ngx.var.binary_remote_addr
                local delay, err = lim:incoming(key, true)
                if not delay then
                    if err == "rejected" then
                        return ngx.exit(503)
                    end
                    ngx.log(ngx.ERR, "failed to limit req: ", err)
                    return ngx.exit(500)
                end
                if delay >= 0.001 then
                    ngx.sleep(delay)
                end
            }
            ...
        }
    }
}

이 구성은 lua_shared_dict 지시문을 사용하여 10MB 크기의 제한_req_store라는 공유 메모리 영역을 정의합니다.

  1. Nginx 구성 다시 로드

구성을 완료한 후 Nginx 구성을 다시 로드하여 적용하세요.

IV. 요약

이 기사에서는 HttpLimitReqModule 모듈, ngx_http_limit_req_module 모듈 및 lua 스크립트를 사용하여 Nginx 요청 속도 제한을 구현하는 세 가지 방법을 소개합니다. 적절한 구성 및 제한 정책을 통해 서버 자원을 효과적으로 보호하고 악의적인 요청으로 인해 서버에 과도한 부하가 발생하는 것을 방지할 수 있습니다. 실제 애플리케이션에서는 특정 요구 사항에 따라 요청 속도를 제한하는 적절한 방법을 선택할 수 있습니다.

위 내용은 Nginx 제한 요청 속도 구성을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
여러 도메인 이름을 Nginx와 구별하는 방법여러 도메인 이름을 Nginx와 구별하는 방법Apr 14, 2025 pm 12:00 PM

Nginx 서버 블록을 구성하여 여러 도메인 이름을 구별 할 수 있습니다. 각 도메인 이름에 대해 고유 한 Server_Name 지시문을 지정하십시오. 위의 단계를 반복하여 여러 서버 블록을 생성하십시오. 요청 된 도메인 이름이 서버 블록과 일치하지 않으면 Nginx는 기본 서버 블록을 사용하여 처리합니다.

nginx 버전을 확인하는 방법nginx 버전을 확인하는 방법Apr 14, 2025 am 11:57 AM

nginx 버전을 쿼리 할 수있는 메소드는 다음과 같습니다. nginx -v 명령을 사용하십시오. nginx.conf 파일에서 버전 지시문을 봅니다. nginx 오류 페이지를 열고 페이지 제목을 봅니다.

nginx가 시작되었는지 확인하는 방법nginx가 시작되었는지 확인하는 방법Apr 14, 2025 am 11:54 AM

nginx가 시작되었는지 확인하려면 다음 단계를 사용하십시오. systemctl 명령으로 상태를 확인하십시오. systemctl 상태 nginx 구성을 확인하고 nginx -t nginx가 포트 80 : netstat -plnt | Grep nginx

Nginx에서 PHP 서버를 시작하는 방법Nginx에서 PHP 서버를 시작하는 방법Apr 14, 2025 am 11:51 AM

Nginx는 FASTCGI 또는 PHP-FPM을 통해 PHP 서버를 시작합니다. 특정 단계에는 다음이 포함됩니다. FASTCGI 모듈 설치 및 NGINX 구성 파일 구성 및 PHP-FPM 소켓 파일의 위치를 ​​지정합니다. PHP-FPM을 설치 및 구성하고 청취 소켓 파일을 설정하고 PHP-FPM을 시작하십시오. Nginx 구성 파일에 프록시 패스 구성을 추가하여 PHP 요청을 PHP-FPM 서버 (보통 127.0.0.1:9000)로 전달하십시오. Nginx를 시작하고 PHP 파일에 대한 액세스를 테스트하여 PHP 서버가 시작되었는지 확인하십시오.

Nginx의 실행 상태를 확인하는 방법Nginx의 실행 상태를 확인하는 방법Apr 14, 2025 am 11:48 AM

nginx의 실행 상태를 보는 방법은 다음과 같습니다. PS 명령을 사용하여 프로세스 상태를보십시오. nginx 구성 파일 /etc/nginx/nginx.conf를 봅니다. Nginx 상태 모듈을 사용하여 상태 끝점을 활성화하십시오. Prometheus, Zabbix 또는 Nagios와 같은 모니터링 도구를 사용하십시오.

nginx 변수를 사용하는 방법nginx 변수를 사용하는 방법Apr 14, 2025 am 11:45 AM

Nginx 변수는 정보를 저장하는 데 사용되는 자리 표시 자이며 $ variable_name을 통해 사용할 수 있습니다. 일반적인 변수에는 $ arg_variable_name (URL 매개 변수), $ host (호스트 이름), $ http_host (http 호스트 헤더), $ method (요청 메소드), $ remote_addr (클라이언트 ip), $ request_uri (uri), $ server_name (서버 이름) 및 $ time_local (서버 시간)이 포함됩니다. 이러한 변수는 액세스 로그, 리디렉션 요청 및 사용자 정의 응답을 기록하는 데 사용될 수 있습니다.

nginx 서버가 매달려있는 경우해야 할 일nginx 서버가 매달려있는 경우해야 할 일Apr 14, 2025 am 11:42 AM

Nginx 서버가 다운되면 다음 문제 해결 단계를 수행 할 수 있습니다. Nginx 프로세스가 실행 중인지 확인하십시오. 오류 메시지의 오류 로그를 봅니다. nginx 구성의 구문을 확인하십시오. Nginx에 파일에 액세스하는 데 필요한 권한이 있는지 확인하십시오. 파일 디스크립터를 확인하여 열린 제한을 확인하십시오. Nginx가 올바른 포트에서 듣고 있는지 확인하십시오. Nginx 트래픽을 허용하기 위해 방화벽 규칙을 추가하십시오. 백엔드 서버 가용성을 포함한 리버스 프록시 설정을 확인하십시오. 추가 지원은 기술 지원에 문의하십시오.

Nginx 서비스를 중지하는 방법Nginx 서비스를 중지하는 방법Apr 14, 2025 am 11:39 AM

Nginx 서비스를 중지합니다. Nginx가 실행 중인지 확인하십시오. SystemD 사용 : Sudo SystemCtl 정지 Nginx; 이전 시스템의 경우 init.d : sudo service nginx stop을 사용하십시오. 명령 줄 사용 : sudo /etc/init.d/nginx 정지; 정지 확인 : 출력에 "비활성 (죽음) 또는"정지 "가 표시되는지 확인하십시오.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경