`

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

阅读更多

利用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;

 

 

 

分享到:
评论

相关推荐

    Pro Git(中文版).pdf

    - **分布式版本控制系统**:每个用户的工作副本都是一个完整的版本库,包括完整的历史记录,如Git。这种方式增强了协作性和安全性。 **1.2 Git简史** - **Git发展背景**:由Linus Torvalds于2005年创建,旨在解决...

    nginx相关资料 .zip

    # 每个流都有单独的录制文件 } } } ``` 6. **启动Nginx**:配置完成后,启动Nginx服务。在Linux环境下,可以使用`/etc/init.d/nginx start`或`systemctl start nginx`。 **直播与回放实现** 1. **直播**:...

    手动部署jitsi-meet依赖的jitsi-videobridge

    Videobridge通过处理视频流的混音和转发,使得每个参会者只需要发送一路视频到桥上,然后由桥将混合后的视频分发给其他参与者。 手动部署Jitsi Videobridge的步骤如下: 1. **环境准备**:确保你有一台运行Linux的...

    setup-ghost-blog:使用Nginx和ModSecurityNaxsi Web应用程序防火墙安装自己的Ghost博客的脚本。 支持多个博客

    7. **管理多个博客**:如果你需要部署多个Ghost博客,可以为每个博客创建单独的Nginx服务器块,并配置不同的域名或子路径。脚本可能需要进行适当的修改以支持多博客环境。 8. **定期更新和维护**:确保你的Ghost...

    javaweb部署到linux-tomca.doc

    Java Web部署到Linux-Tomcat是一项常见的操作,尤其在企业级服务器环境中。下面将详细介绍这个过程,包括Linux系统的安装和配置,以及Tomcat的安装与...每个环节都需要细心处理,以确保服务的稳定、安全和高效运行。

    毕设&课程作业_基于 Python-Flask 的微服务框架.zip

    实现微服务时,可以为每个服务创建单独的 Flask 应用,并使用如 Flask-Restplus 或 Flask-RESTful 这样的扩展来支持 RESTful API 设计。这些扩展提供了方便的工具来定义资源、处理请求和响应,以及添加验证和错误...

    运维新手学习手册

    Nginx部署安装(单独服务器) - **Nginx**:高性能的Web服务器和反向代理服务器。 - 安装Nginx可以通过包管理器(如`yum install nginx`)或从源代码编译安装。 - 启动Nginx可以通过`systemctl start nginx`命令...

    这是Java面试题资料合集.zip

    - BIO是Java中传统的I/O模型,它在处理并发时效率较低,因为每个连接都需要一个单独的线程来处理。 - BIO的主要问题在于当服务端需要处理大量并发请求时,会消耗大量线程资源。 2. **NIO (Non-blocking I/O)** -...

    dnmp:泊坞窗+ Nginx + MySQL + PHP

    7. **性能优化**:通过Docker的隔离性,可以单独优化每个服务的资源使用,提高整体性能。 8. **可扩展性**:Docker容器的特性使得系统容易扩展,可以通过增加或减少容器来应对不同负载需求。 以上就是关于"dnmp:泊...

    大学 毕业设计 项目实训 某婚庆公司网站 源代码.zip

    2. **网页结构**:每个单独的HTML文件可能代表网站的一个不同页面,如首页(index.htm)、关于我们(about.htm)、联系我们(通常会有一个单独的联系页面,虽然这里没有列出)、服务介绍(如service1.htm到service9....

    django-app:设置 Django 项目的 Ansible 角色

    django-app(Ansible 角色) 角色已使用 Ansible 1.8.2 版和 Ubuntu 14.04 LTS (Trusty Tahr) 和 12.04 LTS 进行测试 Ansible 角色来设置新的 django-... 每个工具都分配到 ./tasks/* 目录中的单独文件,其中包含所

    Cachet一个漂亮而强大的开源状态页面系统

    2. **自定义组件**:系统支持创建多个服务组件,如数据库、API、网站等,每个组件的状态都可以单独管理,这样就可以详细地追踪问题所在。 3. **事件管理**:当遇到服务中断或维护时,可以创建事件来通知用户,提供...

    后端开发教程.zip后端开发教程.zip

    - **微服务化**:将大型应用拆分为小型、独立的服务,每个服务都能单独部署和扩展,提高系统的灵活性和可维护性。 7. **安全考虑** - **认证与授权**:JWT(JSON Web Tokens)、OAuth等机制确保用户身份的安全...

    calculadora-imoveis-teste:arquivos部署

    在IT行业中,部署是将开发完成的项目发布到生产环境,以便用户可以访问或...部署过程中涵盖了多个环节,从代码构建到服务器配置,再到最后的用户访问,每个步骤都需要精心规划和执行,以确保应用的稳定性和用户体验。

    django最佳实践 html

    使用Gunicorn或uWSGI作为WSGI服务器,Nginx作为反向代理服务器。考虑使用Docker进行容器化部署,以提高环境一致性。 12. **性能优化**: 了解并应用缓存策略,如使用Django缓存框架、数据库查询优化、使用...

    JAVA WEB项目开发案例精粹

    - 单元测试:对每个模块进行单独测试。 - 集成测试:测试各模块间的集成情况。 - 系统测试:全面测试系统的各项功能。 5. **部署上线**: - 服务器配置:安装必要的运行环境和软件。 - 应用部署:将编译好的...

    backend

    微服务架构将大型应用拆分为多个小型、独立的服务,每个服务都可以单独部署和扩展,提高了系统的可维护性和扩展性。 八、版本控制与协作 Git是主流的版本控制系统,它帮助开发者进行代码版本管理、协同工作和代码...

    first_app:使用Django框架制作的应用

    在描述中提到的"first_app"可能是指该项目的基本结构或主要模块,通常在Django项目中,开发者会为每个功能或应用创建单独的app,这样可以保持代码的组织性和可扩展性。在这个项目中,"first_app"可能是项目的起点,...

    backend2

    5. **微服务架构**:将大型应用拆分为小型独立服务,每个服务都可以单独部署和扩展,提高系统的可扩展性和灵活性。 6. **负载均衡**:通过Nginx或HAProxy等工具,分散到多个服务器,提升系统性能和可用性。 7. **...

    BarSocial-SD:UFLA分布式系统最终工作的原型

    4. **微服务架构**:考虑到分布式系统的复杂性,BarSocial-SD可能采用了微服务架构,将不同的功能如用户管理、内容发布、好友关系等划分为独立的服务,每个服务都可以单独开发、部署和扩展。 5. **RESTful API**:...

Global site tag (gtag.js) - Google Analytics