2010-06-08 18 views

risposta

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

Questa direttiva location negherà l'accesso a qualsiasi directory .git in ogni sottodirectory.

Nota: Questo blocco di posizione deve trovarsi prima del blocco di posizione principale, in modo che possa essere valutato per primo.

+0

Funziona se la cartella '.git' si trova in una sottodirectory come'/folder/.git/'? – Xeoncross

+2

Sì, lo fa. "posizione ~" corrisponde * espressione regolare *, non un percorso secondario. – rzab

+0

tenere presente che questo blocco di posizione deve essere il ** primo ** blocco di posizione. altrimenti altri blocchi potrebbero precederlo. nella maggior parte degli scenari viene elaborato un solo blocco di posizione. – dreamlab

1

Ciò impedirà a qualcuno di colpire il http://example.com/.git ma se si lavora in una sottodirectory come questa http://example.com/example/.git avrà esito negativo. Hai davvero bisogno:

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

Ho appena provato questo e 'posizione ~/\. {access_log off; log_not_found off; negare tutto; } 'bloccherà l'accesso alle sottodirectory nascoste. Quindi non penso che l'extra '. *' Sia necessario. – chrishiestand

43

Le directory e i file nascosti non dovrebbero mai essere accessibili via web. La risposta generale alla tua domanda è:

location ~ /\. { return 403; } 

Questo nega l'accesso a .git, Svn, .htaccess e file simili in ogni sottodirectory.

+0

Non esattamente quello che la domanda ha chiesto - ma ha ragione comunque :) –

+19

Vorrei andare oltre e dire che nessuno dovrebbe sapere che esistono, punto! (Non solo che dovrebbe sempre essere loro negato l'accesso). Quindi, la tua risposta cambia da "return 403;" a "return 404;" ... In questo modo, l'individuo che tenta di accedervi non saprà se esiste veramente. – Swivel

+4

negare tutto è preferibile rispetto al ritorno 403: https://github.com/h5bp/server-configs/issues/126 – flickerfly

Problemi correlati