2010-06-08 9 views

Respuesta

61
http { 
    server { 
    location ~ /\.git { 
     deny all; 
    } 
    } 
} 

Este location Directiva denegará el acceso a cualquier directorio .git en cualquier subdirectorio.

Nota: Este bloque de ubicación debe estar antes de su bloque de ubicación principal, para que pueda ser evaluado primero.

+0

¿Funciona esto si la carpeta '.git' está en un subdirectorio como'/folder/.git/'? – Xeoncross

+2

Sí, lo hace. "ubicación ~" coincide con * expresión regular *, no con una ruta secundaria. – rzab

+0

tenga en cuenta que este bloque de ubicación debe ser el ** primer ** bloque de ubicación. de lo contrario, otros bloques podrían precederlo. en la mayoría de los escenarios solo se procesa un bloque de ubicación. – dreamlab

1

Esto evitará que alguien golpee el http://example.com/.git, pero si trabaja en un subdirectorio como este http://example.com/example/.git, fallará. Que realmente necesita:

location ~ .*/\.git { 
    deny all; 
} 
+2

Acabo de probar esto y 'ubicación ~/\. {access_log off; log_not_found off; negar todo; } 'bloqueará el acceso a subdirectorios ocultos. Así que no creo que el '. * .' extra sea necesario. – chrishiestand

43

directorios y archivos ocultos nunca debe ser accesible desde la web. La respuesta general a su pregunta es:

location ~ /\. { return 403; } 

Esto niega el acceso a .git, Svn, .htaccess y archivos similares en cualquier subdirectorio.

+0

No es exactamente lo que preguntó la pregunta, pero tiene razón de todos modos :) –

+19

Iría más lejos y diría que nadie debería saber que existen, punto! (No solo que siempre se les debería denegar el acceso a ellos). Por lo tanto, su respuesta cambia de 'return 403;' a 'return 404;' ... De esta forma, el individuo que intente acceder a ella no sabrá si realmente existe. – Swivel

+4

negar todo es preferible a la devolución 403: https://github.com/h5bp/server-configs/issues/126 – flickerfly

Cuestiones relacionadas