我们已经build立了一个GitLab服务器 (GitLab 7.0社区版)。
它正在运行,我们的同事可以在局域网内使用它(IP地址和主机只能从局域网中看到)。
一些在这个GitLab实例上托pipe的项目应该与外部用户(不是我们公司的一部分)“共享”。 我们希望让他们访问Git仓库,以便克隆,拉和推。
GitLab服务器将停留在局域网内。 但是我们可以在我们的DMZ中设置一个服务器,这个服务器可以反向代理GitLab服务器。 然而,我们希望只能通过HTTPS访问“.git”URL(所以不能访问GitLab WUI(Web用户界面))。
我们如何在DMZ中设置“反向代理”来为外部用户(在互联网上)提供对我们在GitLab上托pipe的内部Git仓库的访问?
愿望:
https://*/*.git/*url应该被允许在外面; 注意:我们在运行NGINX的DMZ中已经有了一台服务器。 如果我们可以使用这个“软件堆栈”来做反向代理,那就太好了。
注2:这个问题已经有了一个已经过期的100分的奖励,而且分数已经丢失了。 如果我得到一个解决我的问题的答案,我会打开一个赏金,并奖励它的答案。
你有没有尝试过这种显而易见
服务器{
[... ssl和servername的东西...]
位置 / {
#将主机名伪装成gitlab期望的主机名
#
proxy_set_header主机hostname-for-gitlabhost;
proxy_pass https:// internal-gitlab-instance;
proxy_read_timeout 90;
}
}
另外,你可以将位置设置为只允许的位置
https://...../ * .git
url
这应该工作:
代替
位置 /
上面,有点像:
位置〜^ /(。* \。git){
proxy_set_header主机hostname-for-gitlabhost;
proxy_pass https:// internal-gitlab-instance / $ 1;
proxy_read_timeout 90;
}
这捕获了request-uri,并使用location语句将其添加到代理调用中。
我不确定这是否有效,只需从头顶input即可。