现在我已经设置好了nginx,需要隐藏我的.git
目录。我需要什么样的rewrite规则来防止窥探?它应该放在server {}
还是http {}
块中呢?
http {
server {
location ~ /\.git {
deny all;
}
}
}
这个location
指令将拒绝访问任何子目录中的.git
目录。
注意:此location
块必须位于主要location
块之前,以便它可以首先被评估。
.git
文件夹在子目录中,例如/folder/.git/
,这个代码还能正常工作吗? - Xeoncross隐藏目录和文件永远不应该在Web上被访问。对于你的问题,一般的答案是:
location ~ /\. { return 403; }
这将禁止访问任何子目录中的.git、.svn、.htaccess以及类似的文件。
return 403;
改成return 404;
... 这样,试图访问它的人就不会知道它是否真的存在。 - Swivellocation ~ /\..* { return 404; }
会禁止访问以点(.)开头的所有目录(包括子目录)中的文件。 - Maxim Mandrik使用其他解决方案时,我可以下载/.git/config
和其他文件,只有/.git
被保护。这个解决方案会阻止以点“.”开头的所有内容,无论请求的URL深度如何:
location ~ /\.(.*)/?(.*)? {
return 404;
}
location ~ /\..* { return 404; }
表示拒绝访问以点号开头的所有目录和文件(包括子目录和文件)。 - Maxim Mandriklocation ~ .*/\.git {
deny all;
}
location ~ /\. { access_log off; log_not_found off; deny all; }
会阻止访问隐藏的子目录。因此,我认为额外的 .*
不是必要的。 - chrishiestand