是否可以仅使用docker-组合将多个nginx容器安装在同一台主机上,而每个容器共享端口80?
我想整理一个在同一个主机上运行多个应用程序的系统。每个应用程序由几个链接的坞容器和一个坞-组合文件组成,每个应用程序都使用主机系统的nginx作为反向代理向世界公开。到现在为止还好。
每次我添加一个新的docker应用程序时,我都必须为该应用程序添加一个新的nginx.conf文件到主机nginx,但是我更喜欢将nginx配置与应用程序的docker-复合文件捆绑在一起,作为一个nginx容器,从而让每个应用程序干净地维护它在容器中所需的一切。但是,每个nginx容器都需要侦听端口80,因此只有第一个容器可以绑定。主机nginx可以在端口80上侦听多个web应用程序,但是多个nginx实例可以这样做吗?
更新:
看来这完全不可能。我们的目标是将大量特定于应用程序的nginx配置捆绑在应用程序中,因此我正在尝试一种解决方案,即应用程序仍然使用该逻辑来扩展自己的nginx容器,而主机nginx只处理到应用程序nginx的url路由。不确定性能,但这大大减少了应用程序与主机的纠缠。
发布于 2020-01-19 06:55:22
虽然已经过了几年,但我想我还是给遇到这个问题的人回答吧。
很遗憾,我不会。在同一个端口上不可能有多个容器。这是由于操作系统的性质。但我想我能理解你想做什么。您希望有多个自定义配置web应用程序。
最好的方法是通过一个反向代理。反向代理所做的是允许您将请求从主端口(如80和433)转发到其他端口或地址上的web服务器。假设所有容器在配置和代码中都有自己的Nginx实例(或任何其他web服务器)。有两种方法可以做到这一点。
在docker中,最简单的方法是通过nginx-代理项目。只要向您的docker中的环境添加一个变量,托管nginx容器就会自动将您的请求转发到设置的站点。这似乎是你想要做的,因为它只需要一个码头-撰写。
你也可以自己解决这个问题。让您的站点监听nginx中的其他端口,并让一个主nginx容器监听80和433,这两个容器使用您创建的反向代理将请求转发到另一个端口。
祝好运!
https://stackoverflow.com/questions/47011323
复制相似问题