我们已经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即可。