Ubuntu自建GitLab HTTP被强制跳转HTTPS及本地HTTP访问方案
问题原因及解决方法
为什么浏览器会强制HTTPS跳转?
主要有三个常见诱因:
- HSTS缓存残留:如果之前用HTTPS访问过
git.brian.dev,浏览器会存储HSTS(HTTP严格传输安全)规则,强制后续请求自动跳转至HTTPS,即便当前配置已改成HTTP也会生效。 - 浏览器自动HTTPS功能:Chrome的「HTTPS优先」、Firefox的「HTTPS-Only模式」这类默认开启的功能,会主动把HTTP请求转为HTTPS。
- GitLab内部重定向规则:虽然你设置了
external_url为HTTP,但GitLab自带的Nginx可能还有未禁用的HTTPS重定向配置,导致服务器端主动发起跳转。
如何以纯HTTP方式访问GitLab?
按以下步骤逐一排查解决:
一、调整浏览器设置
- 关闭自动HTTPS功能:
- Chrome:打开设置→隐私和安全→安全,找到「HTTPS优先」选项并关闭。
- Firefox:打开设置→隐私与安全,找到「HTTPS-Only模式」,选择「仅在专用窗口中禁用」或「完全禁用」。
- 清除浏览器HSTS缓存:
- Chrome:在地址栏输入
chrome://net-internals/#hsts,在「Delete domain security policies」输入框中填入git.brian.dev,点击「Delete」。 - Firefox:在地址栏输入
about:config,搜索network.stricttransportsecurity.preloadlist,将其值改为false;或者进入设置→隐私与安全→清除数据,勾选「网站数据」并清除(注意这会清除所有网站缓存,也可通过第三方工具单独清除特定域名的HSTS记录)。
- Chrome:在地址栏输入
二、修正GitLab配置
- 打开GitLab配置文件:
sudo nano /etc/gitlab/gitlab.rb - 确保以下配置正确:
- 确认
external_url为HTTP:external_url 'http://git.brian.dev' - 禁用HTTP转HTTPS的重定向:
nginx['redirect_http_to_https'] = false - 注释掉所有SSL相关配置(如果之前配置过):
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/git.brian.dev.crt" # nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/git.brian.dev.key"
- 确认
- 重新配置并重启GitLab服务:
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart
三、验证效果
完成上述操作后,关闭所有浏览器窗口再重新打开,访问http://git.brian.dev,即可正常以纯HTTP方式访问GitLab。
内容的提问来源于stack exchange,提问作者user24809983
相关产品推荐
相关产品推荐

