Nginx
使用 nginx 為 git 儲存庫提供服務失敗並顯示 403 Forbidden
我創建了一個使用者
git
並在他的主目錄中放置了一個空的裸儲存庫/home/git
:$ git init --bare test.git $ ls -l drwxr-xr-x 7 git git 4.0K Jul 18 12:51 test.git
我希望這個儲存庫可以作為
example.com/repos/test.git
.為此,我有以下
nginx
配置:location ~ /repos(/.*) { fastcgi_pass unix:/var/run/fcgiwrap.socket; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /home/git; fastcgi_param PATH_INFO $1; }
但是,嘗試複製儲存庫失敗:
$ git clone https://example.com/repos/test.git Cloning into 'test'... remote: 403 Forbidden fatal: unable to access 'https://example.com/repos/test.git/': The requested URL returned error: 403
同時,
nginx
在其中有這樣說access.log
:"GET /repos/test/info/refs?service=git-upload-pack HTTP/1.1" 403 25 "-" "git/2.4.5"
我究竟做錯了什麼?
謝謝你的幫助。
…
在拉了我的頭髮幾個小時之後,訣竅是重新排序
nginx
配置。此外,為了啟用推送,我必須添加一些
basic-auth
指令。location ~ /repos(/.*) { auth_basic "access denied"; auth_basic_user_file /path/to/your/htpasswd; client_max_body_size 0; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; include fastcgi_params; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /home/git; fastcgi_param PATH_INFO $1; fastcgi_param REMOTE_USER $remote_user; fastcgi_pass unix:/var/run/fcgiwrap.socket; }
對於任何閱讀此內容以找到問題答案的可憐人,如果在這一切之後您收到“對等等等等的權限不足”的錯誤,請像這樣修復您的儲存庫權限。