多容器反向代理

Reverse proxy of multiple container

我在端口 10000 和 10003 上有 2 个 API 容器 (docker) 运行。我想反向代理它们,以便可以调用 API来自一个端口 80。我正在尝试使用 NGINX 来做到这一点,这是我的 nginx 配置文件:

worker_processes 1;
 
events { worker_connections 1024; }
 
http {
    server {
        listen          80;
        server_name     container1;
        location / {
            proxy_pass http://10.10.10.50:10003;
        }
    }

    server {
      listen        80;
      server_name   container2;

      location / {
        proxy_pass http://10.10.10.50:10000;
      }
    }
}

我发现它只在容器1上工作,如果有容器2的请求,它会产生404未找到警告,因为请求去容器1而不是容器2。

最后,我找到了使用 NGINX 的解决方案。我需要做的就是创建一个新的 NGINX 容器,然后重新配置我的 2 API 容器的 url。我编写的配置文件如下所示:

worker_processes auto;
 
events { worker_connections 1024; }

http {
    upstream container1 {
        server 10.10.10.50:10003;
        }
    upstream container2 {
        server 10.10.10.50:10000;
        }
    server {
        listen 80;

        location /container1/ {
            proxy_pass http://container1/;
        }

        location /container2/ {
            proxy_pass http://container2/;
        }
    }
}

现在,我可以使用端口 80 对两个 API 容器发出请求,因为它将从该端口重新路由到指定端口(反向代理)。