>  기사  >  데이터 베이스  >  Nginx가 Lua+Redis를 사용하여 동적으로 IP를 금지하는 방법

Nginx가 Lua+Redis를 사용하여 동적으로 IP를 금지하는 방법

WBOY
WBOY앞으로
2023-05-26 10:50:541912검색

1. 배경

웹사이트를 매일 유지 관리할 때 특정 크롤러나 악의적인 사용자가 서버에 요청하는 것을 차단하려면 동적 IP 블랙리스트를 설정해야 하는 경우가 많습니다. 블랙리스트에 있는 IP의 경우 서비스가 거부됩니다.

2. 아키텍처

IP 블랙리스트 기능을 구현하는 방법에는 여러 가지가 있습니다.

1 운영 체제 수준에서 지정된 IP에 대한 네트워크 요청을 거부하도록 iptables를 구성합니다. 레벨, nginx의 자체 거부 옵션 또는 lua 플러그인을 통해 IP 블랙리스트를 구성합니다.

3 애플리케이션 레벨에서 서비스를 요청하기 전에 클라이언트 IP가 블랙리스트에 있는지 확인합니다.

관리 및 공유를 용이하게 하기 위해 nginx+lua+redis 아키텍처를 통해 IP 블랙리스트 기능을 구현합니다. 아키텍처 다이어그램은 다음과 같습니다.

Nginx가 Lua+Redis를 사용하여 동적으로 IP를 금지하는 방법아키텍처 다이어그램


3. . nginx+ Lua 모듈을 설치하려면 다양한 Lua 모듈을 통합하는 nginx 서버인 openresty를 사용하는 것이 좋습니다.

openresty

2 nginx 서버 설치 및 시작: Nginx가 Lua+Redis를 사용하여 동적으로 IP를 금지하는 방법

nginx 구성

그 중

Nginx가 Lua+Redis를 사용하여 동적으로 IP를 금지하는 방법lua_shared_dict ip_blacklist 1m;

IP 블랙리스트를 캐시하기 위해 nginx 프로세스에서 할당한 1m 공유 메모리 공간입니다. 참조:

https://github.com/openresty/ lua-nginx -module#lua_shared_dict

access_by_lua_file lua/ip_blacklist.lua;

lua 스크립트 위치를 지정하세요

4. redis에서 최신 IP 블랙리스트를 정기적으로 가져오도록 lua 스크립트를 구성하세요.

https://gist .github.com/ceelog/39862d297d9c85e743b3b5111b7d44cb

lua 스크립트 콘텐츠

5. Redis 서버에 새로운 세트 유형 데이터 ip_blacklist를 생성하고 최신 IP 블랙리스트를 추가합니다.

위 단계를 완료한 후 nginx를 다시 로드하면 구성이 적용되기 시작합니다.Nginx가 Lua+Redis를 사용하여 동적으로 IP를 금지하는 방법
이 때 서버에 액세스하세요. IP 주소가 블랙리스트에 있으면 액세스 거부됨이 표시됩니다.

액세스 거부됨

위 내용은 Nginx가 Lua+Redis를 사용하여 동적으로 IP를 금지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제