2012-09-06 12 views
6

Có một cơn lũ http trên máy chủ của tôi, không phải quá nhiều truy vấn, nhưng dù sao đi nữa. Truy vấn trong nhật kýCấu hình nginx để lọc http lũ

95.55.237.3 - - [06/Sep/2012: 14: 38: 23 +0400] "GET/HTTP/1.0" 200 35551 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) "" - "| "-" 93.78.44.25 - - [06/Sep/2012: 14: 38: 23 +0400] "GET/HTTP/1.0" 200 36051 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; vi -US) "" - "| "-" 46.118.112.3 - - [06/Sep/2012: 14: 38: 23 +0400] "GET/HTTP/1.0" 200 35551 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; vi -US) "" - "| "-"

tôi đã cố gắng lọc này trong nginx cấu hình

server { 
    ..... 
    set $add 1; 
    set $ban ''; 

###### Rule 1 ######## 
if ($http_referer = '-') { 
    set $ban $ban$add; 
} 
if ($request_uri = '/') { 
    set $ban $ban$add; 
} 

if ($http_user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)') { 
    set $ban $ban$add; 
} 

if ($ban = 111) { 
    return 444; 
} 
###################### 
...... 
} 

nhưng truy vấn bot stil nhận được 200 OK. Ai đó có thể giúp?

Trả lời

31

Hãy thử thêm một cái gì đó giống như các chỉ dẫn sau để cấu hình của bạn để ngăn chặn http lũ lụt:

http { 
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m; 
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s; 

    server { 
    limit_conn conn_limit_per_ip 10; 
    limit_req zone=req_limit_per_ip burst=10 nodelay; 
    } 
} 

Xem http://nginx.org/en/docs/http/ngx_http_limit_conn_module.htmlhttp://nginx.org/en/docs/http/ngx_http_limit_req_module.html để biết thêm

Có tất cả các chỉ thị sau http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate

LƯU Ý: http://www.botsvsbrowsers.com/details/504401/index.html nói rằng tác nhân người dùng ở trên không phải là bot đã biết

+0

điều này có thể xấu đối với nhiều máy tính trên cùng một mạng, chia sẻ một địa chỉ IP – brauliobo

+3

@brauliobo nghiêm túc số người duyệt từ cùng một ngày nay nếu không chơi trò chơi nhiều người chơi. bạn thậm chí có thể điều chỉnh số lượng ips được phép trong thời gian bạn đặt ... –

+0

@stupidtroll bạn có biết bộ định tuyến không? chúng được sử dụng trong mọi nhà và doanh nghiệp, đưa tất cả người dùng vào một hoặc vài IP Internet – brauliobo

3

Bạn cũng có thể chặn IP cụ thể, làm biện pháp bổ sung.

http{ 
    deny 127.45.4.1; 
    ... 
} 

Hoặc đặt IP bị chặn trong tập tin riêng biệt

http{ 
    include blockedips.conf 
    ... 
} 

blockedips.conf

deny 1.12.4.5; 
3

Bạn cũng có thể chặn quốc gia cụ thể

http{ 
    geoip_country /usr/share/GeoIP/GeoIP.dat; 
    map $geoip_country_code $allowed_country { 
     default yes; 
     FK no; 
     FM no; 
     EH no; 
    } 
} 

GeoIP.dat thể được tải về từ http://dev.maxmind.com/geoip/geoip2/geolite2/ (Tôi không liên kết với maxmind)