带有 nginx 容器的 Docker Gitlab 容器

Posted

技术标签:

【中文标题】带有 nginx 容器的 Docker Gitlab 容器【英文标题】:Docker Gitlab container with nginx container 【发布时间】:2021-08-26 00:52:54 【问题描述】:

我已经为 proxy_pass 设置了一个 gitlab 容器和 nginx,但无法正常工作。 比如我输入example.com/gitlab,它可以proxy_pass到8086端口。 可以成功显示没有照片的登录页面,并且按钮不起作用。 我发现如果我加回端口号,它可以正常工作http://example.com:8086/projects/new 但是proxy_pass地址是http://example.com/projects/new,找不到文件,显示404。

location /gitlab  
    proxy_pass http://example.com:8086;

我该如何处理这种情况?http://example.com/projects/new

http://example.com:8086/projects/new

【问题讨论】:

您要从外部访问的域名与您创建proxy_pass的域相同? 是的,你是对的。 Nginx 容器监听 80 和 443 端口,它将代理传递到同一主机中的不同容器端口 【参考方案1】:

GITLAB_HOST 环境传递给容器

docker run -e GITLAB_HOST=http://example.com/gitlab ....

并将请求头和代理端口传递给nginx配置中的代理服务器

location /gitlab  
    proxy_pass http://example.com:8086;
    proxy_redirect off;

    proxy_set_header Host           $host;
    proxy_set_header X-Real-IP      $remote_addr;
    proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto  $scheme;

【讨论】:

不工作。当您输入:example.com/gitlab 时,它将重定向到:example.com/users/sign_in 你使用的是哪个 Gitlab 镜像 gitlab/gitlab-ee 最新

以上是关于带有 nginx 容器的 Docker Gitlab 容器的主要内容,如果未能解决你的问题,请参考以下文章

带有ssl的nginx代理后面的docker容器内的Wordpress

带有动态容器的 Nginx 反向代理

带有外部 nginx 和综合的 gitlab docker 注册表

构建Docker容器实战

无法使用nginx-proxy和dnsmasq在带有docker-compose的容器之间访问虚拟主机

Nginx 代理背后的 SSL SpringBoot App Docker 容器