Nginx 서버 에서 IP 를 차단 하 는 기본 설정 방법 공유

2858 단어
채집 과 채집 방 지 는 오 랜 화제 로 한편 으로 는 남 의 물건 을 만 들 고 싶 고, 다른 한편 으로 는 자신의 물건 을 다른 사람 에 게 빼 앗 기 고 싶 지 않다.
본 고 는 nginx 차단 ip 을 이용 하여 채집 을 방지 하 는 방법 을 소개 하 며, 당연히 iptable 을 통 해 이 루어 질 수 있 습 니 다.
1. 차단 할 ip 찾기

awk '{print $1}' nginx.access.log |sort |uniq -c|sort -n

nginx. access. log 는 로그 파일 입 니 다.
다음 과 같은 결과 가 나 올 것 입 니 다. 앞 에는 ip 의 방문 횟수 이 고 뒤 에는 ip 입 니 다. 방문 횟수 가 많은 ip 을 차단 해 야 하 는 것 이 분명 합 니 다. 거미 의 ip 이 아 닙 니 다. 이 예 에서 우 리 는 차단 해 야 합 니 다.

165.91.122.67

 ...
 13610 202.112.113.192
 95772 180.169.22.135
 337418 219.220.141.2
 558378 165.91.122.67


2. nginx 의 설치 디 렉 터 리 아래 에 새 차단 ip 파일 을 만 들 고 Blockip. conf 라 고 명명 합 니 다. 나중에 차단 ip 을 새로 추가 하려 면 이 파일 만 편집 하면 됩 니 다.다음 과 같은 내용 을 추가 합 니 다.

deny 165.91.122.67; 


저장 해.
3. nginx 의 프로필 nginx. conf 에 다음 설정 을 추가 하면 http, server, location, limit 에 넣 을 수 있 습 니 다.exception 구문 블록, 상대 경 로 를 주의해 야 합 니 다. 이 예 에서 nginx. conf, Blocksip. conf 는 같은 디 렉 터 리 에 있 습 니 다.

include blockip.conf; 


4. nginx 서 비 스 를 다시 시작 합 니 다: / usr / local / nginx / nginx - s reload 가 적 용 됩 니 다.
고급 용법:
ip 를 차단 하 는 설정 파일 은 하나의 ip 도 차단 할 수 있 고 ip 세그먼트 도 차단 할 수 있 으 며, 특정한 ip 또는 특정한 ip 세그먼트 만 접근 할 수 있 습 니 다.

#     ip  

deny IP; 
#     ip  

allow IP; 
#     ip  

deny all; 
#     ip  

allow all; 
#       123.0.0.1 123.255.255.254     

deny 123.0.0.0/8
#  IP   123.45.0.1 123.45.255.254     

deny 124.45.0.0/16
#  IP   123.45.6.1 123.45.6.254     

deny 123.45.6.0/24


이러한 애플 리 케 이 션 을 실현 하려 면 몇 개의 IP 를 제외 하고 모두 거부 하려 면 Blockip. conf 에 이렇게 써 야 합 니 다.

allow 1.1.1.1; 
allow 1.1.1.2;
deny all; 

단독 사이트 에서 IP 를 차단 하 는 방법, include blocksip. conf;사이트 주소 에 대응 하 는 server {} 구문 블록 에 넣 고 모든 사이트 에서 IP 를 차단 하 는 방법 은 include blocksip. conf 를 포함 합 니 다.http {} 구문 블록 에 넣 습 니 다.
접근 이 너무 잦 은 IP 스 크 립 트 를 차단 하려 면 실제 nginx log 형식 에 따라 변경 하고 접근 IP 와 User - agent 를 꺼 내야 합 니 다. nginx 설정 파일 에 설정 을 추가 해 야 합 니 다.

include ./vhost/blockip.conf;

스 크 립 트 내용:

#!/bin/bash
   nginx_home=/usr/local/webserver/nginx
   log_path=/usr/local/webserver/nginx/logs
   tail -n50000 /usr/local/webserver/nginx/logs/access.log \
   |awk '{print $1,$12}' \
   |grep -i -v -E "google|yahoo|baidu|msnbot|FeedSky|sogou" \
   |awk '{print $1}'|sort|uniq -c|sort -rn \
   |awk '{if($1>1000)print "deny "$2";"}' >$nginx_home/conf/vhost/blockip.conf
   /etc/init.d/nginx reload

좋은 웹페이지 즐겨찾기