2010-06-08 5 views

답변

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

location 지침은 모든 하위 디렉토리에있는 .git 디렉토리에 대한 액세스를 거부합니다.

참고 :이 위치 블록은 기본 위치 블록보다 먼저 있어야 평가할 수 있습니다.

+0

'.git' 폴더가'/ folder/.git /'와 같은 하위 디렉토리에 있으면이 기능이 작동합니까? – Xeoncross

+2

네, 그렇습니다. "location ~"은 하위 경로가 아닌 * 정규 표현식 *과 일치합니다. – rzab

+0

이 위치 블록은 ** 첫 번째 ** 위치 블록이어야합니다. 그렇지 않으면 다른 블록이 블록 앞에 올 수 있습니다. 대부분의 경우 하나의 위치 블록 만 처리됩니다. – dreamlab

1

이렇게하면 누군가가 http://example.com/.git을 치는 것을 방지 할 수 있지만이 하위 디렉토리 (예 : http://example.com/example/.git)에서 작업하면 실패합니다. 당신은 정말로 필요합니다 :

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

나는 이것과'location ~/\을 테스트했다. {access_log off; log_not_found 꺼짐; 모두를 부정하십시오; }'숨겨진 하위 디렉토리에 대한 액세스를 차단합니다. 그래서 나는 여분의. *가 필요하다고 생각하지 않는다. – chrishiestand

43

숨겨진 디렉토리와 파일은 절대로 웹에 접근 할 수 없습니다. 귀하의 질문에 대한 일반적인 대답은 :

location ~ /\. { return 403; } 

이 어떤 하위 디렉토리에 .git에 대한 액세스,을 .svn, htaccess로와 유사한 파일을 거부합니다.

+0

질문에 대한 질문과 정확히 일치하지는 않지만 어쨌든 그는 맞습니다. –

+19

나는 더 나아가 아무도 그들이 존재한다는 것을 알아야한다고 말합니다. (뿐만 아니라 그들은 항상 그들에게 접근을 거부해야한다). 그러므로 답은'return 403;'에서'return 404;'로 바뀝니다.이 방법으로 접근하려고 시도하는 개인은 그것이 진실인지 알 수 없습니다. – Swivel

+4

모든 것을 거부하면 모든 것을 거부합니다. 403 : https://github.com/h5bp/server-configs/issues/126 – flickerfly

관련 문제