Nginx部署Git HTTP服务器(支持每个库单独授权)

本文介绍了如何使用Nginx通过FastCGI方式搭建Git HTTP服务,重点在于实现每个git库的单独授权。首先确保拥有合适的环境,如Ubuntu 14.04、Git 1.9.1、fcgiwrap和Nginx 1.4.6。接着,重点在于Nginx的配置和`fastcgi_params`的设置,确保Nginx用户组对git库有访问权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用Git提供的git-http-backend可以很方便的提供HTTP服务,因为是CGI方式,所以最直接的就是用Apache来部署,详见这里 。

 

但是,因为很多时候都会用Nginx作为伺服(效率考虑),为了资源更绿色地利用,特地奉上通过FastCGI的方式来搭建Git HTTP服务的方式。另外,为了方便灵活的授权支持,本文将提供每个git库单独授权的示例。

 

准备好环境:

ubuntu server: 14.04

git:1.9.1

fcgiwrap :1.1.0-2

nginx:1.4.6

安装没有什么好说的,就是要注意一下nginx运行的用户和组,git目标库,要让nginx用户组有访问权限。

 

nginx配置:

 

server {
    server_name  git.myhost.com;

    access_log /var/log/nginx/git-access.log ;
    error_log /var/log/nginx/git-error.log ;

    #location ~ (/.*) {  #如果你不想每个git库都单独的授权,就用这个全局通用配置
    location ~ /([\w_]+).git/(.*) {
        auth_basic "Restricted";
        auth_basic_user_file /opt/repos/git/auth/$1;

        include       /etc/nginx/fastcgi_params;

        fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
        fastcgi_param GIT_HTTP_EXPORT_ALL true;
        fastcgi_param GIT_PROJECT_ROOT    /opt/repos/git;  #注意目录权限
        fastcgi_param PATH_INFO           /$1.git/$2;
        #fastcgi_param PATH_INFO           $1;   # 配合上面的全局授权
        fastcgi_pass  unix:/var/run/fcgiwrap.socket;   #注意socket权限
    }
}

 

 

fastcgi_params配置:

#下面的基本是默认的配置,但是有2个不注释掉,就会出错~
fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;

#fastcgi_param  SCRIPT_FILENAME         $request_filename;    #注释掉这里
#fastcgi_param  SCRIPT_NAME             $fastcgi_script_name;  #注释掉这里
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

fastcgi_param   HTTPS                   $https if_not_empty;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;

# Pass authenticated username to CGI app
fastcgi_param REMOTE_USER $remote_user;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值