直接在内存中修改nginx配置?

时间:2015-05-20 19:41:43

标签: nginx

这可能是一个非常愚蠢的问题,但我仍然会问它。 Nginx读取nginx.conf文件&将信息保存在内存/缓存中,直到你执行了'nginx -s reload'。 有没有办法可以直接在内存中修改nginx配置,因为我需要每分钟重新加载多次,配置文件可能很大。

基本上我试图解决的问题是我有多个码头工具容器即将出现。在一组主机上动态下载。每次容器出现时,它都会有一个不同的IP&端口打开(应用程序设计约束)。而且我正在考虑使用Nginx作为反向代理。考虑到最终产品可能在主机群集上运行3000-5000个容器这一事实,我该怎么做才能解决这个问题。容器启动/销毁的速度可能是每秒100左右。我需要一种快速的方法来确保路由正常发生

1 个答案:

答案 0 :(得分:1)

嗯,可能不是,nginx在多个worker中加载它的配置,所以尝试动态更改它似乎不是一个好主意。

你的目标是什么?您似乎需要进行一些动态路由或其他类型的处理。你应该看一下:

  • nginx指令和模块,例如eval
  • Lua脚本
  • nginx module dev(在C / C ++中)

这将允许您根据需要做更多或更少的操作,您可以在像redis这样的数据库中读取一些配置,并根据Redis中的值更改代码的行为。

例如,您可以通过读取Redis中的值来做很多事情,然后在nginx配置文件中使用if指令。您可以使用How can I get the value from Redis and put it in a variable in NGiNX?通过eval模块在nginx中获取redis值。

更新:

对于nginx中的动态IP,您应该查看Dynamic proxy_pass to $var with nginx 1.0。 所以我建议你:

  • 有一个用redis写入码头工人的IP地址的过程
  • 使用nginx中的eval和redis模块阅读
  • 使用值代理