使用 nginx 提供 git 存储库服务失败,错误代码为 403 Forbidden

使用 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"

我究竟做错了什么?

谢谢你的帮助。

答案1

...

经过几个小时的绞尽脑汁后,诀窍就是重新排列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;
    }

对于任何可怜的人,如果在阅读本文以找到问题的答案之后,您得到了“权限不足”的错误,请修复您的存储库权限就像这样

相关内容