为 GitLab 启用 SSL 导致 ERR_CONNECTION_REFUSED

为 GitLab 启用 SSL 导致 ERR_CONNECTION_REFUSED

我已经安装 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;
    ...
}

相关内容