【问题标题】:Nginx API Gateway in Docker ComposeDocker Compose 中的 Nginx API 网关
【发布时间】:2021-06-19 06:05:55
【问题描述】:

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

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

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

我遇到的一些问题是:

  • 我希望像 /a/foo/bar 这样的路径匹配 API-A 但不匹配 /ab/foo
  • 无论路径是否以 / 结尾(aka /a/foo/a/foo/ 都有效),我都希望路由正常工作

我的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 配置以正确路由我的请求?

感谢您的帮助!

【问题讨论】:

    标签: docker rest nginx docker-compose reverse-proxy


    【解决方案1】:

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

    Api-A 匹配:

    ^a(\/.*)?
    

    与 Api-B 匹配:

    ^b(\/.*)?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 2020-08-09
      • 1970-01-01
      • 2020-10-15
      • 2019-02-03
      • 1970-01-01
      相关资源
      最近更新 更多