Docker Compose 中的 Nginx API 网关

Nginx API Gateway in Docker Compose

(免责声明:我在这里看到过很多版本的这个问题,但 none 似乎真的回答了我的问题。)

我想使用 NGINX 作为 API 网关,将请求路由到 docker-compose 中的微服务 APIs。

对于我的示例应用程序,我有两个微服务 API(A 和 B)。任何以 /a 开头的请求端点都应该转到 API-A,任何以 /b 开头的请求端点都应该转到 API-B.

我遇到的一些问题是:

我的 docker-compose 文件如下所示:

version: "3.8"
services:
  gateway:
    build:
      context: ./api-gw
    ports:
      - 8000:80
  apia:
    build:
      context: ./api-a
    ports:
      - 8000
  apib:
    build:
      context: ./api-b
    ports:
      - 8000

我的示例 NGINX 配置文件如下所示:

server {
    listen       80;
    server_name  localhost;

    location ^~ /a {
       proxy_pass   http://apia:8000/;
    }

    location ^~ /b {
       proxy_pass   http://apib:8000/;
    }

}

如何设置我的 NGINX 配置以正确路由我的请求?

感谢您的帮助!

您需要将您的 Nginx 正则表达式规则更改为这些:

匹配 Api-A :

^a(\/.*)?

匹配 Api-B :

^b(\/.*)?