Nginx 动态上游配置/路由

Dan*_*off 5 nginx proxy redis dynamic-routing

我正在尝试 nginx 的动态上游配置,但找不到任何好的解决方案来实现来自第三方源(如 redis 或 mysql)的上游配置。

其背后的想法是在主服务器中拥有单个文件配置,并根据环境条件将请求代理到各种应用程序服务器。考虑一下动态部署,其中有 X 个服务器在不同端口上运行 Y 个工作线程。例如,我创建一个新应用程序并部署。应用程序管理器选择一个服务器,然后推出一个工作程序(Ruby/PHP/Python),然后将 ip:port 报告给中央数据库,状态为“up”。此时,当我转到给定的 url 时,nginx 应该将所有请求代理到指定的 ip:port 上游。整个事情与 Heroku 所做的非常相似,除了这个概念验证不应该准备好生产,主要是为了内部需求。

我发现的最简单的解决方案是使用带有基于 ruby​​ 的 DNS 服务器的解析器。它可以工作,nginx 正确获取 IP 地址,但唯一的问题是您无法为该 IP 定义端口号。

第二个解决方案(我还没有尝试过)是使用其他东西作为代理服务器,可能是用 Erlang 编写的。在这种情况下,我们需要使用一些东西来提供静态内容。

有什么想法如何以更灵活和稳定的方式实现这一点?

PS 一些研究选择:

小智 0

这正是 Michael Hampton 引用的 - 使用 Lua 实现动态上游

http://soseoff.com/2012/06/11/dynamic-nginx-upstreams-with-lua-and-redis.html

  • 有趣的是,这是我自己的博客文章的链接:) (4认同)