我有git-http-backend
通过nginx fastcgi代理提供git仓库。 Nginx配置看起来像:
server {
listen 443 ssl;
server_name git.example.com;
auth_basic "Git Access";
auth_basic_user_file /etc/nginx/.htpasswd_git;
error_log /var/log/nginx-git-error.log;
access_log /var/log/nginx-git-access.log;
client_max_body_size 0;
root /var/git/;
location ~ /git(/.*) {
fastcgi_pass unix:/var/run/fcgiwrap.socket;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
fastcgi_param GIT_PROJECT_ROOT /var/git;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param PATH_INFO $1;
fastcgi_read_timeout 600;
}
}
[从测试看来,如果一次有多个请求,则代理将失败(代码为504),并且通过一些Google搜索似乎证实了我对git-http-backend
无法支持多个请求的怀疑。
我如何进行设置,以便可以一次向git repo发出多个请求?
我最近遇到了同样的情况并很快发现this script on github
它为每个新的http请求生成一个新的git-http-backend实例。通过
编译它(需要安装语言)go build git-http-multi-backend.go
并运行
./git-http-multi-backend -r /Path/To/Repos
这将使其在:80上侦听(端口可以更改)。现在,您只需将您的nginx配置更改为类似
location ~ /git(/.*) {
proxy_pass http://localhost:80;
}
我确实承认,这不是最优雅的解决方案,因为绝对可以通过摆弄nginx配置来实现相同的效果。 git-http-multi-backend工具的作者甚至谈到了它,但是缺少任何具体的实现示例。
而且我刚刚找到了另一个解决方案,它比我以前使用git-http-multi-backend的解决方案还要简单
您需要增加可产生的最大FCGI_CHILDREN数量。
就我而言,我编辑了/etc/init.d/fcgiwrap并将FCGI_CHILDREN设置为例如3.现在,我可以立即签出/克隆/推送3个仓库。