【问题标题】:Multiple simultaneous requests with git-http-backend on NGINX fastcgi proxyNGINX fastcgi 代理上使用 git-http-backend 的多个同时请求
【发布时间】:2019-10-17 17:14:16
【问题描述】:

我有 git-http-backend 通过 nginx fastcgi 代理服务 git repos。 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),并且一些谷歌搜索似乎证实了我的怀疑 git-http-backend 不支持多个请求。

如何设置以便可以一次向 git repo 发出多个请求?

【问题讨论】:

    标签: git nginx webserver fastcgi


    【解决方案1】:

    我最近也遇到了同样的情况,很快找到this script on github

    它为每个新的 http 请求生成一个新的 git-http-backend 实例。 通过

    编译它(需要安装go语言)
    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 工具的作者甚至谈到了它,但缺乏任何具体的实现示例。

    【讨论】:

      【解决方案2】:

      我刚刚找到了另一个解决方案,比我之前使用 git-http-multi-backend 的解决方案还要简单

      您需要增加可生成的 FCGI_CHILDREN 的最大数量。

      就我而言,我编辑了 /etc/init.d/fcgiwrap 并将 FCGI_CHILDREN 设置为例如3. 现在,我可以一次签出/克隆/推送 3 个 repos。

      【讨论】:

      • 哦,顺便说一句:编辑这个脚本可能被认为不是一个好习惯。我只是想,用 FCGI_CHILDREN=3 将脚本放入 /etc/default/fcgiwrap 也可以完成这项工作,并且不理会启动脚本。
      • 嗯,这对我来说看起来很完美,但在重新启动服务甚至重新启动后,它似乎不起作用。
      猜你喜欢
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 2014-10-11
      • 2021-12-30
      • 1970-01-01
      • 2018-08-24
      • 2012-06-24
      • 1970-01-01
      相关资源
      最近更新 更多