首页 > 解决方案 > Docker Compose 中的 Nginx API 网关

问题描述

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

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

对于我的示例应用程序,我有两个微服务 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 配置以正确路由我的请求?

谢谢你的帮助!

标签: dockerrestnginxdocker-composereverse-proxy

解决方案


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

匹配 Api-A :

^a(\/.*)?

匹配 Api-B :

^b(\/.*)?

推荐阅读