我们运行多项服务,为公共API的不同部分提供服务。这些部分实现相同的接口并共享相同的基本路径。
我正在寻找一种实现API网关的好方法,或者重用可以将传入请求路由到相应服务的现有软件(例如反向代理),具体取决于请求路径参数中的ID。
/v1/things/{ID}
ID_1 -> route request to internalIP1/v1/things/{ID}
ID_2 -> route request to internalIP2/v1/things/{ID}
每当在我们的(虚构的)注册服务中创建新的“thing”并生成新的ID_x时,就应该通过API更新路由表。 Afaik,像tyk这样的API网关不支持这个用例。
Nginx Plus提供了一个HTTP API,我们可以动态更新映射,例如发出一个简单的内部请求。然而,Nginx Plus需要花钱。
“常规”Nginx还允许用lua编写的扩展,它可以从某种数据存储中访问这些高级映射,这些映射本身可能不是基于http的(速度和开销),但可能在内存中就像基于redis的共享存储可能是另一种选择。
This related question现在已经四岁了。