如何解决反向代理后面的本地 Gitlab 容器注册表
我已经在 docker 解决方案中安装了本地 Gitlab。然后,在另一台服务器上,我得到了一个 nginx 反向代理。从那个反向代理,nginx 监听 443 和 80 个端口,Gitlab 工作得很好。但是,我无法从 6060 端口运行 gitlab 容器注册表。
Gitlab 正在工作,让我们说 https://mygitlab.example.com 并且 gitlab 服务器 ip 是 2.2.2.2
docker-compose.yml 用于 gitlab
version: '3.8'
services:
web:
image: 'gitlab/gitlab-ee:latest'
container_name: gitlab
restart: unless-stopped
hostname: 'gitlab.mydomain'
networks:
default:
ipv4_address: 192.168.0.2
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://mygitlab.example.com'
ports:
- '80:80'
- '443:443'
- '6060:6060'
volumes:
- '/data/gitlab/config:/etc/gitlab'
- '/data/gitlab/logs:/var/log/gitlab'
- '/data/gitlab/data:/var/opt/gitlab'
- '/data/gitlab/registry:/var/opt/gitlab/gitlab-rails/shared/registry'
healthcheck:
test: curl -s http://localhost:80 >/dev/null; if [[$$? == 52 ]]; then echo 0; else echo 1; fi
interval: 30s
timeout: 10s
retries: 5
networks:
default:
external:
name: gitlab_network
这是我的 gitlab.rb 注册表文件配置:
registry_external_url 'https://mygitlab.example.com:6060'
gitlab_rails['registry_enabled'] = true
gitlab_rails['registry_host'] = "mygitlab.example.com"
gitlab_rails['registry_port'] = "6060"
gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"
这是我的 nginx 反向代理 conf:
server {
listen 6060 ssl;
server_name mygitlab.example.com;
ssl_certificate /etc/nginx/certs/example_com_2021.crt;
ssl_certificate_key /etc/nginx/private/example_com_private_key.key;
location / {
client_max_body_size 10m;
proxy_pass http://2.2.2.2:6060;
}
}
然后当我重新配置gitlab并重新加载nginx时,可以看到反向代理监听6060端口并发送gitlab服务器。我可以通过 tcpdump 看到流量,看起来还可以。同样在 Gitlab 网络界面上,注册表似乎可以正常工作。
但是,当我尝试从客户端计算机登录时,出现以下错误:
Error response from daemon: login attempt to http://mygitlab.example.com:6060/v2/ failed with status: 400 Bad Request
我错过了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com(将#修改为@)