如何在nginx OSS上动态重新配置上游服务器?

如何在nginx OSS上动态重新配置上游服务器?,nginx,load-balancing,Nginx,Load Balancing,我有多个来自nginx负载平衡器的上游服务器: upstream app { # Make each client IP address stick to the same server # See http://nginx.org/en/docs/http/load_balancing.html ip_hash; # Use IP addresses: see recommendation at https://www.nginx.com/resources/wiki/sta

我有多个来自nginx负载平衡器的上游服务器:

upstream app {
  # Make each client IP address stick to the same server
  # See http://nginx.org/en/docs/http/load_balancing.html
  ip_hash;

  # Use IP addresses: see recommendation at https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
  server 1.1.1.1:6666; # app-server-a
  server 2.2.2.2:6666; # app-server-a
}
现在,我通过关闭每台服务器(例如
systemctl myapp stop
),然后让nginx检测到服务器已关闭,从而使服务器处于活动/passove配置

不过,我希望能够动态地更改上游服务器,而不必关闭app server或nginx OSS。我知道对于nginx Plus的支持,但我使用的是nginx OSS

如何在nginx操作系统上动态重新配置上游服务器?

您可以使用:

  • 具有lua脚本功能的OSS nginx捆绑包

  • nginx和lua脚本(您可以使用nginx OSS和luajit自行配置)来实现这一点

  • 可以完全实现您想要的,它仍在进行中,但动态上游功能已经存在,并且可以通过RESTAPI进行配置

我将添加有关如何部署和配置dynx的详细信息:

  • 您需要有一个docker群集并运行(用于测试目的) 您可以拥有一台1群集机器),按照以下步骤操作
  • 例如,在需要部署堆栈后,使用此命令(您需要位于dynx git根目录上):

    docker堆栈部署-c docker-compose.yml dynx

要检查应用程序是否正确部署,可以使用以下命令:

docker stack services dynx
要配置可通过api使用的位置,例如,您可以执行以下操作:

curl -v "http://localhost:8888/configure?location=/httpbin&upstream=http://www.httpbin.org/anything&ttl=10"
要测试它是否有效,请执行以下操作:

curl -v http://localhost:8666/httpbin

如果无法使用,请随时联系我或在github上发布问题

如果可以在此处使用dynx,请添加有关如何配置dynx的详细信息。谢谢@dhia!是否可以在不添加Docker的情况下使用dynx?是的,当然,我会在自述文件中添加说明,或者在我有空闲时间时添加一个alternatif安装脚本,您可以打开一个问题来跟踪此问题。是否有此问题的更新?选项似乎非常有限,我还不想使用nginx plus,它太贵了