2011-11-27 30 views
12

Ejecuto varios sitios web detrás de una interfaz nginx. Todos mis sitios están en Python/Django. Veo en mis registros que muchos hackers se arrastran por diversas aplicaciones de php. Me gustaría bloquearlos (devuelve un 404) en nginx sin que lleguen a mis servidores de aplicaciones.Cómo bloquear todas las extensiones de archivos de ciertos tipos en nginx

Me gustaría hacer esto de forma global en mi archivo nginx conf, por lo que se aplica a todas las configuraciones específicas de mi sitio.

Entonces, ¿cómo hacer yo:

  1. retorno 404 para todas las extensiones de tipo .php
  2. retorno 404 para búsquedas parciales de ciertas cadenas, como "phpmyadmin"

Respuesta

17

Probar:

location ~ (\.php$|myadmin) { 
    return 403; 
} 
+0

gr8 gracias. Acepté esta respuesta porque resuelve mi problema real, pero la adición de alexander a continuación es crítica para la forma en que yo quería implementar la solución. – pwalsh

5

location obligada aparecer dentro de server solamente, no está permitido dentro de http.

Por lo tanto, la única opción es crear un archivo con sus ubicaciones comunes y include en su server s.

+0

Gracias Alexander - vea mi comentario en la respuesta antes de la suya. – pwalsh

3

Como complemento de la respuesta Dayo, hay que añadir un dólar de salida, de lo contrario cualquier archivo como jquery.mousescroller.js también será bloqueado.

location ~ (\.php$|myadmin) { 
    return 403; 
} 
Cuestiones relacionadas