你如何隐藏.git项目目录?

Xeo*_*oss 54 regex git nginx

现在我有nginx设置,我需要能够隐藏我的.git目录.我需要什么样的重写才能停止窥探?哪里在server {}http {}块将它去?

rza*_*zab 69

http {
  server {
    location ~ /\.git {
      deny all;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

location指令将拒绝访问.git任何子目录中的任何目录.

注意:此位置块必须位于主位置块之前,以便可以首先对其进行评估.

  • 如果您有多个虚拟服务器,是否可以在所有其他服务器之前添加一次此配置 blob,还是必须在每个服务器中复制它? (4认同)
  • 是的,它确实."location~"匹配*正则表达式*,而不是子路径. (3认同)

Jon*_*ker 50

隐藏的目录和文件永远不应该是Web可访问的.您问题的一般答案是:

  location ~ /\.  { return 403; }
Run Code Online (Sandbox Code Playgroud)

这会拒绝访问任何子目录中的.git,.svn,.htaccess和类似文件.

  • 我会更进一步说,没有人应该知道他们存在,期间!(不仅仅是他们应该被拒绝访问它们).因此,你的答案从"返回403;"变为"返回404;"......这样,试图访问它的人将不知道它是否真的存在. (27认同)
  • 同意"保护所有隐藏目录"是一个理智的默认值,但考虑`.well-known`/[RFC5785](https://tools.ietf.org/html/rfc5785)是一个隐藏的目录/别名资源,应该是可访问的在一个点位置. (8认同)
  • deny all优先于return 403:https://github.com/h5bp/server-configs/issues/126 (5认同)

Oli*_*vic 7

使用我可以下载的其他解决方案/.git/config和其他解决方案,只是/.git受到保护。无论请求的 URL 有多深,这个都拒绝以点开头的所有内容:

location ~ /\.(.*)/?(.*)? {
    return 404;
}
Run Code Online (Sandbox Code Playgroud)