当我用nginx作为中转git仓库的地址后。每次克隆输入完地址和用户名后总是出现403错误。
remote: 403 Forbidden
fatal: unable to access 'http://39.105.81.XXX/mmp.git/': The requested URL returned error: 403
因为是第一次搭建git私服的http仓库,出现这个错误也是查阅各种资料。但是都没有解决,最后只能耐着性子一点点排查nginx配置文件。
最后终于找出原因,403错误说明无法访问这个地址,而我们访问nginx的默认页面时却没说明问题。
出错的地方就呼之欲出,在nginx访问git仓库地址时出现了错误。而配置文件中恰好有一段配置是这个地方。
fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
在找git-http-backend这个模块的时候没找到,这个地址下面并没有这个模块。所以只要修改地址就可以解决。
如果安装git时没有安装git-core这个模块,也不必惊慌。使用yum安装即可。
使用yum安装后的git-core会在/usr/libexec目录下。自己按需修改即可。
yum install git-core
=======================出错的配置文件=======================
server {
listen 80;
server_name git.server.com;
client_max_body_size 100m;
auth_basic "Git User Authentication";
auth_basic_user_file /usr/local/nginx/conf/pass.db;
location ~ ^.*\.git/objects/([0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+.(pack|idx))$ {
root /data/git;
}
location ~ /.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|receive)-pack)$ {
root /data/git;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_connect_timeout 24h;
fastcgi_read_timeout 24h;
fastcgi_send_timeout 24h;
fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
fastcgi_param PATH_INFO $uri;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT /data/git;
fastcgi_param REMOTE_USER $remote_user;
include fastcgi_params;
}
=======================修改后的配置文件=======================
其他东西不改,只要将git-http-backend地址修改为正确的即可。
fastcgi_param SCRIPT_FILENAME /usr/local/libexec/git-core/git-http-backend;