我目前正在运行Arch服务器,并使用nginx通过http(带有git-http-backend和gitweb)来提供git和gitweb。但是,我需要对git和gitweb都附加一层授权和访问控制。 Gitolite似乎是实现此目的的最佳工具。但是,如何才能使用gitolite来对通过http投放的gitweb和git进行访问控制?
我当前的nginx conf服务器部分看起来像这样:
server {
listen 127.0.0.1:80;
server_name git.<hostname>;
root /usr/share/gitweb;
# Basic Authentication
auth_basic "Private Git Server";
auth_basic_user_file /srv/etc/.htpasswd;
location ~ /git(/.*) {
root /srv/git/;
client_max_body_size 0;
# fcgiwrap for serving cgi
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
# export all repositories under GIT_PROJECT_ROOT
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT /srv/git;
fastcgi_param PATH_INFO $1;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_pass unix:/var/run/fcgiwrap.sock;
}
try_files $uri @gitweb;
location @gitweb {
fastcgi_pass unix:/var/run/fcgiwrap.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/gitweb/gitweb.cgi;
fastcgi_param PATH_INFO $uri;
fastcgi_param GITWEB_CONFIG /etc/gitweb.conf;
include fastcgi_params;
}
}
或者也许有一些具有相同的访问和权限控制功能但具有更清晰的nginx实现和文档的gitolite替代品?
在NGiNX配置中,您需要调用gitolite而不是git-http-backend。
[我在“ git on HTTP with gitolite and nginx”中提到了该方法:那是for gitolite 2 though。
[ScriptAlias /hgit/ @H@/gitolite/bin/gl-auth-command/
仍然保留了定义特殊路径(/hgit
)的想法,该路径随后将称为gitolite
。Full example here,但适用于GitWeb和Apache。