我的服务器背景:我把所有东西都放到了docker容器里。有一个docker网络。所有的docker容器都在同一个网络上。我使用别名来寻址我的容器。我的gitlab容器别名是gitlab.docker
。这个问题的有趣容器是我的gitlab_runner
容器、我的gitlab
容器和我的nginx
容器。
我注意到gitlab-runner
当我的容器应该克隆一个项目时抛出了错误 18。
我非常确定这是一个nginx
问题。我知道这是因为我进入了同一个 docker 网络上的一个容器,并且曾经尝试通过我的公共 dns 地址进行克隆,并且曾经通过内部网络绕过我自己的 nginx,结果(替换了我的域和我的顶级域。其余部分未受影响):
bash-5.0# git clone "http://gitlab.myHost.com/docker/sbt.git"
Cloning into 'sbt'...
Username for 'https://gitlab.myHost.com': root
Password for 'https://[email protected]':
warning: redirecting to https://gitlab.myHost.com/docker/sbt.git/
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (12/12), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: unpack-objects failed
bash-5.0# git clone "http://gitlab.docker/docker/sbt.git"
Cloning into 'sbt'...
Username for 'http://gitlab.docker': root
Password for 'http://[email protected]':
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 16 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (16/16), done.
这是我的 nginx 配置:
server {
server_name gitlab.myHost.com;
listen 80;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/gitlab.myHost.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gitlab.myHost.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
location / {
proxy_pass http://gitlab.docker;
}
}
有人知道为什么它不起作用吗?我应该说一下,gitlab 的网站运行良好。除了 Web IDE,它无法加载。以防万一它已连接,但这实际上是我待办事项中很远的一个问题。
答案1
好的,我找到了答案。我的仓库中有一个 55Mb 的二进制文件,太大了。将这个添加到我的配置中解决了这个问题:
client_max_body_size 4G;
问题是,4GB 是否太大了。但由于它只用于 Gitlab,我想目前是可以的。