1. 배경
웹사이트를 매일 유지 관리할 때 특정 크롤러나 악의적인 사용자가 서버에 요청하는 것을 차단하려면 동적 IP 블랙리스트를 설정해야 하는 경우가 많습니다. 블랙리스트에 있는 IP의 경우 서비스가 거부됩니다.
2. 아키텍처
IP 블랙리스트 기능을 구현하는 방법에는 여러 가지가 있습니다.
1 운영 체제 수준에서 지정된 IP에 대한 네트워크 요청을 거부하도록 iptables를 구성합니다. 레벨, nginx의 자체 거부 옵션 또는 lua 플러그인을 통해 IP 블랙리스트를 구성합니다.
3 애플리케이션 레벨에서 서비스를 요청하기 전에 클라이언트 IP가 블랙리스트에 있는지 확인합니다.
관리 및 공유를 용이하게 하기 위해 nginx+lua+redis 아키텍처를 통해 IP 블랙리스트 기능을 구현합니다. 아키텍처 다이어그램은 다음과 같습니다.
아키텍처 다이어그램
openresty
2 nginx 서버 설치 및 시작:
그 중
lua_shared_dict ip_blacklist 1m;
access_by_lua_file lua/ip_blacklist.lua;lua 스크립트 위치를 지정하세요4. redis에서 최신 IP 블랙리스트를 정기적으로 가져오도록 lua 스크립트를 구성하세요.
lua 스크립트 콘텐츠https://gist .github.com/ceelog/39862d297d9c85e743b3b5111b7d44cb
5. Redis 서버에 새로운 세트 유형 데이터 ip_blacklist를 생성하고 최신 IP 블랙리스트를 추가합니다.
위 단계를 완료한 후 nginx를 다시 로드하면 구성이 적용되기 시작합니다.
이 때 서버에 액세스하세요. IP 주소가 블랙리스트에 있으면 액세스 거부됨이 표시됩니다.
위 내용은 Nginx가 Lua+Redis를 사용하여 동적으로 IP를 금지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!