2012-07-18 8 views
6

Tengo un bloque de servidor escuchando 80 solicitudes de puerto en un nombre de servidor específico junto con algunas directivas de ubicación. ¿Cómo puedo hacer que nginx trate cualquier solicitud que no coincida como si no la hubiera recibido, es decir, dejar que se agote el tiempo de espera? Actualmente esas solicitudes se tratan con un error 404¿Cómo puedo decirle a nginx que ignore silenciosamente las solicitudes que no coinciden y deje que se agote en lugar de dar 404

Respuesta

0

Supongo que está tratando de desviar las solicitudes maliciosas. Algo como esto podría funcionar (no probado).

Configure un servidor por defecto (capturas todas aquellas peticiones que no coinciden con un nombre de servidor existente), y luego redirigir al cliente de nuevo a sí mismo:

server { 
    listen 80 default_server; 
    rewrite^http://127.0.0.1/; 
} 

usted tendría que configurar un Catch similares todo para ubicaciones no válidas dentro de los bloques de servidor válidos. Podría ser más un dolor de cabeza de lo que desea.

No sé qué tan útil sería esto en la práctica. Sería mejor considerar fail2ban o alguna otra herramienta que pueda monitorear sus registros y prohibir clientes en el firewall.

+0

Sí, para las solicitudes no deseadas, quiero simular la situación en la que mi enrutador simplemente no reenvía el puerto en cuestión, y la solicitud agota el tiempo de espera. Y no puedo hacer eso en el firewall, porque las solicitudes del mismo host: puerto podrían ser realmente necesarias. El filtrado se realiza en todo el uri ... – Paralife

+0

También podría consultar un WAF como http://code.google.com/p/naxsi/ –

+0

. ¿El bloque de servidor mencionado anteriormente no provocaría un bucle infinito? Reescribe la URL y luego muestra sus contenidos, pero recuperar los contenidos reescritos hará que nginx evalúe nuevamente la reescritura para reescribir "http://127.0.0.1/" consigo mismo en un ciclo infinito. Suena como una receta para el comportamiento inesperado/colapsado. – Eric

2

No es una forma de ignorar todas las peticiones y decirle a nginx para responder nada:

server { 
    listen 80 default_server; 
    return 444; 
} 

documenta aquí: http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

La no-estándar de código 444 se cierra una conexión sin enviar una cabecera de respuesta .

+2

La pregunta es pedir ignorar solicitud, no conexión cercana. –

Cuestiones relacionadas