我已经安装 GitLab 几个月了,我决定是时候添加一个真正的 SSL 证书(非自签名)了。
按照文档,我更改了以下行:
external_url 'http://<domain>.com'
到:
external_url 'https://<domain>.com'
并取消注释以下几行:
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
nginx['ssl_certificate_key'] "/etc/gitlab/ssl/gitlab.key"
为了确保万无一失,我仔细检查了关键文件:
root@host:/etc/gitlab# cat /etc/gitlab/ssl/gitlab.crt
-----BEGIN CERTIFICATE-----
...
root@host:/etc/gitlab# cat /etc/gitlab/ssl/gitlab.key
-----BEGIN PRIVATE KEY-----
...
然后我运行了gitlab-ctl reconfigure
,最后得到了一条成功消息。但是,导航到 GitLab URL 时,我得到了ERR_CONNECTION_REFUSED
。当我注释掉上面的所有行并运行 时gitlab-ctl reconfigure
,HTTP 端口 80 上的一切都恢复正常。
当我向配置文件提供两个证书并调整 URL 时,什么可能导致 nginx 拒绝连接?谢谢!
答案1
听起来 GitLab 没有监听 443。80 上的重定向会将您发送到 443,您会在那里收到“连接被拒绝”的提示。配置中应该有一行listen 443
(请参阅http://nginx.org/en/docs/http/configuring_https_servers.html) 以允许其接收 SSL 请求。
页面示例:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}