2011-01-09 16 views
9

Tengo un servidor Apache que es golpeado cerca de 100 veces en una vez cada 30 minutos con las solicitudes de direcciones URL que coincidan con este patrón:¿Cómo bloquear las solicitudes de bot a las URL que coinciden con un patrón común en Apache?

/neighborhood/****/feed 

Estas direcciones URL utilizadas para tener un contenido en ellos y solían ser válida. Ahora todos son 404 así que este bot está matando el rendimiento cada vez que nos golpea.

¿Qué añado a mi archivo htaccess para bloquearlo?

Nota: El bot está en EC2 por lo que el bloqueo por la dirección IP no funcionará. Necesito bloquear las solicitudes que coincidan con ese patrón.

Respuesta

0

mod_rewrite? Pero dudo que pueda hacerse más rápido a nivel apache. Me gustaría echar un vistazo a nginx como frontend, es mucho más eficiente tanto en 404 como en el rendimiento de las reglas :-)

PS. Además, es posible tratar de volver a una redirección 100 MB archivo en algún lugar para hacer un poco de diversión de estos robots :-D

+0

mod_rewrite es lo que parece que necesito para usar. Sin embargo, no estoy seguro de cómo debería ser la regla de reescritura real. – bflora2

+0

@bflora: 403 y 410 son fáciles ([F] y [G]) pero no estoy seguro si hay una forma rápida de 404 en mod_rewrite. – ephemient

+0

[F] sería genial. ¿Cómo debería ser la regla? Estoy intentando esto hasta ahora sin éxito: RewriteRule^neighborhoods /([^/\.]+)/?$ http://www.windycitizen.com/ [F] – bflora2

10

Usando una regla mod_rewrite en caso de que llegar a donde quiere estar:

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

Lo anterior va en su archivo .htaccess o si prefiere ponerlo dentro de su archivo de host virtual (porque se ha desactivado análisis de .htaccess para el rendimiento - una buena idea):

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

Dada un URI de/barrio/Carson/alimentar usted debe esperar una respuesta como:

Prohibida

usted no tiene permiso para acceder a /barrio/Carson/alimentación en este servidor.

Apache/2.2.16 (Ubuntu) del servidor al puerto ... 80

Esto fue probado en mi máquina virtual local que ejecuta Apache/2.2.16 en Ubuntu 10.10.

+1

Por cierto, esto causa un código de estado de: 403 Prohibido –

1

El siguiente código se podría utilizar para 404 en mod_rewrite:

RewriteRule pattern - [R=404] [other_flags] 
Cuestiones relacionadas