如何设置NGINXconfiguration以使用不同的代理和站点文件将代理逆向转换为多个容器

我正在使用VagrantDockerNGINX (以及其他工具)来设置我们的开发环境。

我们有一个通用的微服务架构,我们使用每个微服务的容器。

作为一个概念certificate,我正在使用两个testing微服务来试图找出开发环境ab

我们运行三个容器( nginx,a,b )是为了certificate我的概念。

在NGINX中使用反向代理,我希望能够使用下面的代理

http://localhost:8181/a/ proxies request to the IP address of container 'a' http://localhost:8181/b/ proxies request to the IP address of container 'b'

为此,我想把每个服务nginxconfiguration的pipe理延迟到这个服务本身。 希望这将允许每个服务添加/删除/修改条目到与容器和主机操作系统共享的/etc/nginx/sites-available卷。

例如,我认为在NGINX中我需要以下结构

 /etc/nginx - nginx.conf - sites-available - a - b - sites-enabled - a (sym link to sites-available/a) - b (sym link to sites-available/b) 

nginx.conf文件如下所示:

 worker_processes 4; events { worker_connections 1024; } http { include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

假设当我拉ab的容器的IP地址,我得到以下

a -> 172.17.0.1

b -> 172.17.0.2

而且我有a容器暴露端口1234和容器b暴露端口5678 ,那么ab文件应该在sites-availablesites-available

我尝试了以下和类似的变化,但似乎无法让它使用BOTH /a/b代理。

摘自/ etc / nginx / sites-available / a

 server { listen 80; location /a/ { proxy_pass http://172.17.0.1:1234/; } } 

摘自/ etc / nginx / sites-available / b

 server { listen 80; location /b/ { proxy_pass http://172.17.0.2:5678/; } } 

例如,使用这个configuration,结果如下

http://localhost:8181/a/ proxies to container 'a' just fine

http://localhost:8181/b/ gives a connection refused