>  기사  >  운영 및 유지보수  >  Nginx는 악의적인 공격을 방지하기 위해 액세스 빈도 구성을 제한합니다.

Nginx는 악의적인 공격을 방지하기 위해 액세스 빈도 구성을 제한합니다.

WBOY
WBOY원래의
2023-07-04 17:01:473319검색

Nginx는 악의적인 공격을 방지하기 위해 접속 빈도 구성을 제한합니다.

인터넷이 발달하면서 웹사이트 보안이 중요한 이슈가 되었습니다. 악의적인 공격을 방지하기 위해서는 접속 빈도를 제한해야 합니다. 고성능 웹 서버인 Nginx는 구성을 통해 이 목표를 달성할 수 있습니다.

Nginx는 액세스 빈도를 제한할 수 있는limit_req_module이라는 모듈을 제공합니다. 구성하기 전에 모듈이 활성화되어 있는지 확인해야 합니다. nginx.conf 파일에서 http 노드를 찾아 여기에 다음 코드를 추가합니다.

http {
    ...
    limit_req_zone $binary_remote_addr zone=myzone:10m rate=5r/s;
    ...
}

위 코드에서limit_req_zone은 각 IP 주소에 대한 방문 횟수를 기록하는 메모리 영역을 정의하는 데 사용됩니다. $binary_remote_addr은 클라이언트의 IP 주소를 나타내는 Nginx 변수입니다. zone=myzone은 영역의 이름이며 사용자 정의할 수 있습니다. 10m는 10MB의 영역을 의미합니다. rate=5r/s는 초당 최대 5개의 요청이 허용된다는 의미입니다.

다음으로 특정 위치 구성에 이 제한을 적용할 수 있습니다. 예를 들어 인터페이스를 제한하려는 경우 코드는 다음과 같습니다.

location /api/ {
    ...
    limit_req zone=myzone burst=10 nodelay;
    ...
}

위 코드에서limit_req 명령은 요청 빈도 제한 모듈을 활성화하는 데 사용되며 이전에 정의된 영역 이름 myzone을 지정합니다. Burst=10은 제한 빈도를 초과한 후 최대 10개의 요청이 지연됨을 의미합니다. nodelay는 주파수 제한을 초과하면 지연이 없지만 503 오류가 직접 반환된다는 것을 의미합니다.

위의 구성 방법 외에도 지정 기간을 제한할 수도 있습니다. 예를 들어 작업 시간 내에만 제한하고 싶을 경우 코드는 다음과 같습니다.

location /api/ {
    ...
    limit_req zone=myzone burst=10 nodelay;
    limit_req_status 403;
    limit_req_log_level error;
    limit_req_time 8h;
    ...
}

위 코드에서limit_req_time은 제한 시간을 지정하는 데 사용되며 여기서는 8시간으로 제한합니다. Limit_req_status 및limit_req_log_level과 같은 기타 명령은 빈도 제한을 초과할 때 반환 상태 코드 및 로깅 수준을 구성하는 데 사용됩니다.

위 구성은 단일 인터페이스의 액세스 빈도만 제한한다는 점에 유의해야 합니다. 전체 웹 사이트를 제한하려면 서버 노드에서 구성할 수 있습니다. 코드는 다음과 같습니다.

server {
    ...
    limit_req zone=myzone burst=10 nodelay;
    ...
}

위 구성을 통해 웹 사이트에 대한 악의적인 공격의 영향을 효과적으로 제한할 수 있습니다. 그러나 빈도 제한의 세분성은 특정 비즈니스 요구에 따라 결정되어야 하며 너무 엄격해서는 안 됩니다. 그렇지 않으면 일반 사용자의 액세스 경험에 영향을 미칠 수 있습니다.

요약하자면, Nginx의limit_req_module 모듈은 악의적인 공격을 방지하기 위해 액세스 빈도를 제한하는 데 도움이 될 수 있습니다. 합리적인 구성을 통해 웹사이트의 보안을 보호하고 사용자의 액세스 경험을 향상시킬 수 있습니다. 이 글이 모든 분들께 도움이 되었으면 좋겠습니다!

위 내용은 Nginx는 악의적인 공격을 방지하기 위해 액세스 빈도 구성을 제한합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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