2011-01-09 18 views
9

Tôi đã có một máy chủ apache đó được đánh khoảng 100 lần tại mỗi 30 phút một lần với yêu cầu cho các URL phù hợp với mô hình này:Làm thế nào để chặn các yêu cầu bot tới các URL khớp với một mẫu chung trong Apache?

/neighborhood/****/feed 

Những URL được sử dụng phải có nội dung về họ và sử dụng có giá trị. Bây giờ họ là tất cả 404 vì vậy bot này là giết chết hiệu suất mỗi khi nó chạm chúng tôi.

Tôi phải thêm gì vào tệp htaccess để chặn nó?

Lưu ý: Bot nằm trên EC2 nên việc chặn theo địa chỉ IP sẽ không hoạt động. Tôi cần chặn các yêu cầu khớp với mẫu đó.

Trả lời

0

mod_rewrite? Nhưng tôi nghi ngờ nó có thể được thực hiện nhanh hơn trên cấp apache. Tôi sẽ xem nginx như một lối vào, đó là cách hiệu quả hơn ở cả 404 và quy tắc hiệu suất :-)

PS. Ngoài ra, bạn có thể cố gắng để trở lại một chuyển hướng đến 100MB tập tin nơi nào đó để làm cho một số niềm vui của những chương trình :-D

+0

mod_rewrite là những gì nó trông giống như tôi cần phải sử dụng. Bạn không chắc chắn quy tắc viết lại thực tế sẽ trông như thế nào. – bflora2

+0

@bflora: 403 và 410 rất dễ ([F] và [G]) nhưng tôi không chắc liệu có cách nào nhanh chóng để 404 trong mod_rewrite không. – ephemient

+0

[F] sẽ rất tuyệt. Quy tắc nên trông như thế nào? Tôi đang cố gắng này cho đến nay không thành công: RewriteRule^xóm/([^/\.]+)/?$ http://www.windycitizen.com/ [F] – bflora2

1

Đặt một hệ thống bộ nhớ đệm hoặc CDN trước Apache, và allow your 404 responses to be cached.


403 có thể dễ dàng được thiết lập bởi mod_rewrite:

RewriteRule ^neighborhood/[^/]+/feed$ - [F] 
+0

Đó là công việc nhiều hơn việc thêm quy tắc viết lại vào htaccess của tôi. :) – bflora2

10

Sử dụng một quy tắc mod_rewrite sẽ giúp bạn đến nơi mà bạn muốn trở thành:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/neighborhood/[^/]+/feed$ [NC] 
RewriteRule ^.*$ - [F,L] 

Trên đây đi vào tập tin .htaccess của bạn hoặc nếu bạn muốn đặt nó trong tập tin vhost của bạn (vì bạn đã tắt phân tích cú pháp .htaccess để thực hiện - một ý tưởng tốt):

<Location /> 
RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/neighborhood/[^/]+/feed$ [NC] 
RewriteRule ^.*$ - [F,L] 
</Location> 

Do một URI của/xóm/carson/ăn bạn nên mong đợi một câu trả lời như:

Forbidden

bạn không có quyền truy cập /xóm/carson/thức ăn trên máy chủ này.

Apache/2.2.16 (Ubuntu) Server tại ... Cảng 80

này đã được thử nghiệm trên VM địa phương của tôi chạy Apache/2.2.16 trên Ubuntu 10.10.

+1

BTW, điều này gây ra mã trạng thái: 403 Bị cấm –

1

Các mã sau đây có thể được sử dụng cho 404 trong mod_rewrite:

RewriteRule pattern - [R=404] [other_flags] 
Các vấn đề liên quan