我有一个装有 Ubuntu Server 14.04 的 VPS,并且安装了 GitLab,由 Apache2 提供不同的站点服务。GitLab 版本是 Omnibus 软件包 7.14.1。
我已经成功配置了 GitLab 的 HTTPS 和自签名证书进行测试(假设它是olddomain.com我购买了通配符 SSL 证书(用于*.newdomain.io) 并将其安装到由 Apache 提供服务的其他网站上,并且它们运行良好。
对于 GitLab 来说,情况有些不同。我搜索了所有关于gitlab.olddomain.com并将它们改为gitlab.newdomain.io。因此文件中的/etc/gitlab/gitlab.rb
更改如下:
external_url 'https://gitlab.newdomain.io:2443'
这是唯一改变的设置,其他设置保留为默认值。
Apache的配置是:
<VirtualHost *:80>
ServerName gitlab.newdomain.io
Redirect / https://gitlab.newdomain.io/
CustomLog /var/log/apache2/gitlab/access.log combined
ErrorLog /var/log/apache2/gitlab/error.log
</VirtualHost>
使用 HTTPS 的配置:
<VirtualHost *:443>
ServerName gitlab.newdomain.io
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
SSLEngine On
SSLCertificateFile /etc/ssl/certs/newdomain.io.crt
SSLCertificateKeyFile /etc/ssl/private/newdomain.io.key
ProxyRequests Off
ProxyPreserveHost On
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://localhost:2443/
ProxyPassReverse / https://localhost:2443/
<Location />
Order allow,deny
Allow from all
</Location>
CustomLog /var/log/apache2/gitlab/access.log combined
ErrorLog /var/log/apache2/gitlab/error.log
</VirtualHost>
在我进行了更改之后,gitlab-ctl reconfigure
甚至进行了更改gitlab-ctl restart
。对于 Apache,service apache2 reload
已经执行了。
当我查看 Chrome 的开发者工具 > 网络,我看到请求 URL到https://gitlab.newdomain.io, 这状态码是302和地点是https://gitlab.olddomain.com有趣的是服务器:nginx。 这远程地址是xxx.xxx.xxx.xxx:443,但监听该端口的服务应该是Apache2。
运行后netstat
我看到以下两行:
tcp6 0 0 :::443 :::* LISTEN 1849/apache2
tcp 0 0 0.0.0.0:2443 0.0.0.0:* LISTEN 32493/nginx
两个 DNS 记录gitlab.olddomain.com和gitlab.newdomain.io指向同一台机器。当我在浏览器中检查证书时,我发现好的证书,通配符之一newdomain.io,但我访问的是错误的域名。
浏览器缓存已清除、服务器已重启等。
答案1
你的 Gitlab 配置有问题,我也遇到过这种情况。
在 Gitlab 中,你有一个“startpage”的配置。这是你当前未登录时重定向到的页面。
因此,请转到https://gitlab.newdomain.io/users/sign_in登录并在设置下的管理面板中更改此设置。