在一个容器中运行nginx以代理在另一个容器中传递Gitlab

时间:2017-07-18 16:27:30

标签: docker gitlab

我想在同一主机上运行多个服务,例如GItlab,racktables,并在不同容器中启用https。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以通过运行反向代理(nginx或apache)来实现此目的,该代理使用不同的虚拟主机将流量转发到不同的容器。

gitlab.foo.bar     -> gitlab container
racktables.foo.bar -> racktables container
etc

反向代理容器将端口80和443映射到主机。所有其他容器都不需要端口映射,因为所有流量都通过反向代理。

我认为最快捷的方法就是使用jwilder/nginx-proxy。它至少非常适合新手,因为它可以为您自动化几乎所有东西。您还可以通过查看容器中生成的配置文件来学习很多。即使让TLS工作也不是那么复杂,默认情况下你会从ssllabs获得A +等级的设置。

我已经将这个用于我的业余爱好项目近一年了,而且效果很好(使用Let'加密)。

您当然也可以手动配置所有内容,但是有很多陷阱需要做很多工作。

执行此操作的最糟糕方法是在主机上运行反向代理,并将所有容器中的大量端口映射到主机。请不要这样做。