docker、docker-compose 部署 gitlab,如何配置 https,让 git clone 地址与域名一样不带端口号

2020-06-14 16:55:07 +08:00
 GoRoad

使用 docker 部署 gitlab 时,gitlab 内部自带了 nginx,如果使用 80:80 、443:443 这样的映射方式,就会和本地的 nginx 冲突,如果使用非 80/443 映射容器内的 80 和 443,在访问域名和 clone 的时候必须加上端口号才可以访问、 通过查资料想到两种看似可行的解决办法:1 、使用容器内 nginx2 、使用外部 nginx,关闭容器内部的 nginx,两种办法均试过以失败告终

4463 次点击
所在节点    Linux
19 条回复
shynome
2020-06-14 16:58:32 +08:00
nginx 反向代理 gitlab
wh0syourda66y
2020-06-14 17:02:00 +08:00
配置 traefik 管理 80,443 的流量
GoRoad
2020-06-14 17:02:35 +08:00
@shynome #1 能说一下 docker 的 gitlab 容器中的配置吗?仅仅是 nginx 的反向代理设置是不行的
GoRoad
2020-06-14 17:03:29 +08:00
@wh0syourda66y #2 并没有使用 traefik 环境是本机的 nginx+docker 中的 gitlab
wangyzj
2020-06-14 17:05:36 +08:00
改本地 nginx 配置,加一层反向代理
或者
试试 https://github.com/nginx-proxy/nginx-proxy
shynome
2020-06-14 18:01:28 +08:00
@GoRoad 外部 nginx 反向代理 gitlab 端口
gitlab 端口改成自定义端口,不要和 nginx 的 80 433 冲突就行,顺便把 gitlab 容器里的 nginx 关掉
shynome
2020-06-14 18:02:40 +08:00
@GoRoad 外部 nginx 反向代理 gitlab 端口
gitlab 端口改成自定义端口,不要和 nginx 的 80 433 冲突就行,顺便把 gitlab 的 https 关掉,让 nginx 统一管理证书

上条是手误了
Jirajine
2020-06-14 18:12:54 +08:00
一个办法是用一个“网关”监听 80 443 并通过访问域名或路径路由到后台服务,传统的 web 服务器或者时髦点的 traefix 、envoy 都可以。
或者用传统的方法,给你部署服务的主机网卡分配多个 IP/IP 段,然后监听不同的 IP 地址。
GoRoad
2020-06-14 18:29:28 +08:00
@shynome #7 我直接把 gitlab 的 nginx 禁用可以吗?
zkdfbb
2020-06-14 18:55:39 +08:00
前些天刚搞过这个问题,可以参考一下,https://www.ishield.cn/article/81
GoRoad
2020-06-14 19:19:52 +08:00
@zkdfbb #10 非常感谢 这样设置后域名和使用 https clone 都是正常的不带端口号的吧
GoRoad
2020-06-14 21:31:34 +08:00
@zkdfbb #10 我安装你文档中的方法 去除配置 ssh 的那部分 nginx 报了 502
kaneg
2020-06-14 21:39:14 +08:00
反向代理可解。留一个主 nginx 做 web 服务器,然后配置不同的虚拟主机指向背后的各个应用服务器。应用服务器的端口随便配
lekai63
2020-06-14 21:44:00 +08:00
jwilder/nginx-proxy 配合 docker-compose 编排呗

具体去看 j 的 github
JDog
2020-06-14 21:47:42 +08:00
docker 运行的 gitlab 用不同的端口映射出去, 如 1080:80 ,1443:443;
然后采用宿主机 nginx vhost 的方式反向代理 gitlab
1044523901
2020-06-14 21:49:42 +08:00
docker-compose 配置下环境变量
zkdfbb
2020-06-14 22:16:00 +08:00
@GoRoad 可以的,https 和 clone 都不带端口,你配置哪个地方报 502 了,

location / {
proxy_pass https://127.0.0.1:10443;
}

这块?
GoRoad
2020-06-14 22:17:49 +08:00
@zkdfbb #17 是的 我把 127.0.0.1 换成公网 ip 就可以访问,但是写成 127.0.0.1 或者 localhost 都不行
GoRoad
2020-06-14 22:24:55 +08:00
@zkdfbb #17 弄好了 是我自己给自己整懵逼了 刚开始用的本地的 nginx 后来换成 docker 但是地址写的 127.0.0.1 这样肯定访问不到的 非常感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/681458

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX