在 Nginx 的反向代理设置(二) 中,我们演示了一个如何通过 Nginx 的代理功能代理内网中运行的业务服务,并通过 proxy_set_header 指令解决在后端业务服务器中获取用户真实IP的问题。 本文将进一步扩展案例,使用 Nginx 作为后端服务的负载均衡器。
增加 app2 容器
要演示负载均衡,我们添加一个后台业务服务器的运行实例,这个在 docker-compose 中设定。 改变后的 docker-compose.yml 如下:
1 | version: '2' |
可以看到,我们基于同一个镜像 (image) 建立了两个容器,这两个容器都运行在 Docker 的虚拟网络之上,分别拥有自己的虚拟网络地址,就像运作在内网中的两台主机一样。同时,我们在 proxy 容器的 links 和 depends_on 指令中增加了对 app2 的引用,以便 proxy 可以通过虚拟网络访问到 app1 和 app2。
设置负载均衡
接下来,我们修改 proxy 容器对应的 default.conf 文件。 在 proxy_pass 中通过 upstream 指令来指定多个后端主机。 修改后的文件如下:
1 | upstream testapp { |
1 | docker-compose up -d |
既可以打开浏览器查看结果了。