Nginx

使用 nginx 為 git 儲存庫提供服務失敗並顯示 403 Forbidden

  • July 18, 2015

我創建了一個使用者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;
   }

對於任何閱讀此內容以找到問題答案的可憐人,如果在這一切之後您收到“對等等等等的權限不足”的錯誤,請像這樣修復您的儲存庫權限。

引用自:https://serverfault.com/questions/706790