docker - Docker Compose 中的 Nginx API 网关
问题描述
(免责声明:我在这里看到了这个问题的很多版本,但似乎没有一个能真正回答我的问题。)
我想使用 NGINX 作为 API 网关将请求路由到 docker-compose 中的微服务 API。
对于我的示例应用程序,我有两个微服务 API(A 和 B)。任何以开头的请求端点/a
都应该转到 API-A,任何以开头的请求端点/b
都应该转到 API-B。
我遇到的一些问题是:
- 我想要
/a/foo/bar
匹配 API-A 但不匹配的路径/ab/foo
- 我希望路由工作,无论路径是否以 a 结尾
/
(又名两者都/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 配置以正确路由我的请求?
谢谢你的帮助!
解决方案
您需要将您的 Nginx 正则表达式规则更改为:
匹配 Api-A :
^a(\/.*)?
匹配 Api-B :
^b(\/.*)?
推荐阅读
- laravel - 如何重置 Xampp 的默认页面?
- postgresql - 针对多个值查询 Postgres 中的 jsonb 列
- swagger - 用于 Spring Data Rest 的 Swagger 2 或 3
- javascript - 我该如何解决 [Vue 警告]:数据()中的错误:Laravel Vue 中的“ReferenceError:total is not defined”
- linux - NixOps:如何部署到现有的 NixOS VM?
- python - Python合并不相等的数据框
- python - 使用 /insights edge 的 Instagram Graph API 问题
- spring - 具有由多个线程调用的方法的 Spring 组件
- python - django select_related() 和 django-mptt。如何一次获取所有兄弟姐妹?
- python - 将列格式代码应用于多个数据框