Gitlab 无法使用HTTPS进行克隆:The requested URL returned error: 502
问题
使用Gitlab-Runner进行Clone存储库时提示:
fatal: unable to access 'http://gitlab-ci-token:xxxxxx@gitlab_domain/project/repo.git/': The requested URL returned error: 502
并且无法使用git clone https://domain/project.git,也返回相同错误。
TL;DR
将Nginx下Gitlab站点配置中passenger_user和passenger_group的用户和用户组设置为具有/var/opt/gitlab/gitlab-workhorse/socket权限的用户和用户组,或者将/var/opt/gitlab/gitlab-workhorse/socket赋予正确的所有者和访问权限。
原因
我是通过外置Nginx对Gitlab进行反向代理时才出现的问题。查看Gitlab访问日志:
unix://var/opt/gitlab/gitlab-workhorse/socket failed (13: Permission denied)
查看Nginx下Gitlab站点的配置文件,发现:
upstream gitlab-workhorse {
server unix://var/opt/gitlab/gitlab-workhorse/socket fail_timeout=0;
}
问题就出现在这个socket的权限上,解决方案有两个,一个是更改Nginx下Gitlab站点配置中passenger_user和passenger_group的用户和用户组,最好换成你安装Gitlab时的同一个用户,也可以先设置为root测试问题是否解决:
server {
···
# Make sure Passenger runs as the correct user and group to
# prevent permission issues
passenger_user root;
passenger_group root;
···
}
另一种方式则可以更改/var/opt/gitlab/gitlab-workhorse/socket文件为正确的用户和用户组,且给正确的权限。