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

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

通过运行反向代理(nginx或apache)来实现这一点,该代理使用不同的虚拟主机将stream量转发到不同的容器。

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

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

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

我已经使用了这个为我的爱好项目近一年,它很好(与我们的encryption)。

你当然也可以手动configuration一切,但是这么多的陷阱还是有很多工作的。

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