我已经通过Omnibus软件包在CentOS 7(全新安装)上安装了最新的Gitlab-CE(8.10),如下所述:https://about.gitlab.com/downloads/#centos7
现在,我想更改可以访问Gitlab Web界面的默认端口。为此,我按照http://docs.gitlab.com/omnibus/settings/nginx.html#change-the-default-port-and-the-ssl-certificate-locations的说明进行操作,即我包括
external_url "http://127.0.0.1:8765"
在配置文件/etc/gitlab/gitlab.rb
中,然后使用gitlab-ctl reconfigure && gitlab-ctl restart
更新配置。
但是,当我导航到http://127.0.0.1:8765
时,Gitlab会重定向到http://127.0.0.1/users/sign_in
,即端口规范以某种方式被丢弃。然后,当我手动将浏览器中的URL更改为http://127.0.0.1:8765/users/sign_in
时,它会正确显示登录页面,有趣的是,页面上的所有链接(例如,"探索","帮助&#34 ;)包含端口规范。
为了解决此问题,是否有必要在/etc/gitlab/gitlab.rb
以外的其他位置指定端口?
答案 0 :(得分:8)
问题在这里:https://gitlab.com/gitlab-org/gitlab-ce/issues/20131 解决方法: 将此行添加到/etc/gitlab/gitlab.rb:
nginx['proxy_set_headers'] = { "X-Forward-Port" => "8080", "Host" => "<hostname>:8080" }
将port和hostname替换为您的值,然后将其替换为root或sudo:
gitlab-ctl reconfigure
gitlab-ctl restart
它帮助我使用gitlab repo的Debian 8.5,gitlab-ce。
答案 1 :(得分:1)
除了external_url之外,文档还建议设置几个NGiNX代理头:
默认情况下,当您指定
external_url
时,omnibus-gitlab将设置一些NGINX代理标头,这些标头在大多数环境中都被认为是理智的。例如,omnibus-gitlab将设置:
"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on"
(如果您在
external_url
中指定了https架构。)但是,如果您的GitLab处于更复杂的设置,例如在反向代理后面,则需要调整代理标头以避免错误,例如您想要的更改被拒绝或无法验证CSRF令牌真实性已完成422无法处理。
这可以通过覆盖默认标头来实现,例如。在
/etc/gitlab/gitlab.rb
中指定:
nginx['proxy_set_headers'] = {
"X-Forwarded-Proto" => "http",
"CUSTOM_HEADER" => "VALUE"
}
保存文件并reconfigure GitLab以使更改生效。
这样您就可以指定NGINX支持的任何标题。
我刚刚在
nginx['proxy_set_headers']
中取消注释了/etc/gitlab/gitlab.rb
的默认设置(同时,将X-Forwarded-Proto
更改为http
并删除了X-Forwarded-Ssl
),然后突然就可以了!
答案 2 :(得分:0)
我按照上面的评论改变了etc / gitlab.rb,而我的端口没有改变。
external_url http://localhost:13080/
...
nginx['proxy_set_headers'] = {
"X-Real-IP" => "$remote_addr",
"X-Forwarded-For" => "$proxy_add_x_forwarded_for",
"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on",
"X-Forward-Port" => "13080",
"Host" => "localhost:13080"
}
gitlab-ctl reconfigure
gitlab-ctl restart