介紹如何設定 Nginx 與 Apache 網頁伺服器,避免 .git
版本控制目錄暴露在網路上。
現在許多的網頁程式原始碼都會以 git 來管理,而通常所有的 git 相關檔案都存放在原始碼目錄的
.git
子目錄之下,正常來說這個目錄只有內部開發時使用,布署至正式伺服器時應該要排除該目錄,但是許多人還是會不小心連同這個目錄一起布署進去,造成內部的程式碼外洩。
為了防止不小心外洩 .git
目錄中的資料,我們可以直接在 Nginx 或 Apache 網頁伺服器中直接設定排除 .git
目錄,以下是設定的方法。
Nginx 網頁伺服器
在 Nginx 網頁伺服器中若要避免 .git
目錄暴露在網路上,可以在設定檔裡面 server
區段的開頭加入以下設定:
# 避免暴露 .git 目錄 location ~ /.git/ { deny all; }
或是直接將所有以句點開頭的隱藏檔案與目錄全部都擋掉:
# 避免暴露所有隱藏檔案與目錄 location ~ /\. { deny all; }
Apache 網頁伺服器
在 Apache 2.4 版中若要避免 .git
目錄暴露在網路上,可以在設定檔(通常是 httpd.conf
)中加入以下設定:
# 避免暴露 .git 目錄(Apache 2.4) <DirectoryMatch "^/.*/\.git/"> Require all denied </DirectoryMatch>
若是 Apache 2.2 版,則改用以下設定:
# 避免暴露 .git 目錄(Apache 2.2) <DirectoryMatch "^/.*/\.git/"> Order deny,allow Deny from all </DirectoryMatch>
若在 .htaccess
設定檔中則可使用以下設定:
# 避免暴露 .git 目錄(.htaccess) RedirectMatch 404 /\.git
參考資料:Internetwache.org