领事模板 - "If Service Exists" 条件?
Consul Template - "If Service Exists" condition?
我刚刚继承了一个 Nginx proxy/app 服务器设置,它使用 Consul 和 Consul 模板进行服务发现和注册。 Nginx 代理有一个配置文件,其中包含一个条目,用于注册下游应用服务器:
<snip>
upstream appservers {
{{ range service "my-app-servers" }}
server {{ .Address }}.{{ .Port }};
{{ end }}
}
<snip>
我在后台有 consul-template
运行 来捕获对 my-app-servers
的任何更新,适当地更新 nginx.conf
文件,然后重新加载 nginx 配置。这一切都很好,我们可以根据需要从组合中添加和删除应用程序服务器。也就是说,如果存在 no 应用程序服务器可用的情况,我们最终会得到一个空的 upstream
块,这会导致 nginx 重新加载失败。
consul-template 中有没有办法让 "if service my-app-servers exists, then..."
和 "if not, then..."
逻辑?我希望能够让我的 nginx.conf
文件有一个配置用于存在上游服务器的场景,以及另一个在上游服务器不存在时显示错误页面的应急设置。我仍在跟上 consul-template 的步伐,还没有看到任何显示此类逻辑语法的示例。有帮助吗?
您可以通过将 service
查找的结果存储在变量中,然后使用仅在变量不为空时输出上游块的条件来实现。
{{- $upstream_services := service "my-app-servers" -}}
{{- if $upstream_services -}}
upstream appservers {
{{- range $upstream_services }}
server {{ .Address }}.{{ .Port }};
{{- end }}
}
{{- end }}
我刚刚继承了一个 Nginx proxy/app 服务器设置,它使用 Consul 和 Consul 模板进行服务发现和注册。 Nginx 代理有一个配置文件,其中包含一个条目,用于注册下游应用服务器:
<snip>
upstream appservers {
{{ range service "my-app-servers" }}
server {{ .Address }}.{{ .Port }};
{{ end }}
}
<snip>
我在后台有 consul-template
运行 来捕获对 my-app-servers
的任何更新,适当地更新 nginx.conf
文件,然后重新加载 nginx 配置。这一切都很好,我们可以根据需要从组合中添加和删除应用程序服务器。也就是说,如果存在 no 应用程序服务器可用的情况,我们最终会得到一个空的 upstream
块,这会导致 nginx 重新加载失败。
consul-template 中有没有办法让 "if service my-app-servers exists, then..."
和 "if not, then..."
逻辑?我希望能够让我的 nginx.conf
文件有一个配置用于存在上游服务器的场景,以及另一个在上游服务器不存在时显示错误页面的应急设置。我仍在跟上 consul-template 的步伐,还没有看到任何显示此类逻辑语法的示例。有帮助吗?
您可以通过将 service
查找的结果存储在变量中,然后使用仅在变量不为空时输出上游块的条件来实现。
{{- $upstream_services := service "my-app-servers" -}}
{{- if $upstream_services -}}
upstream appservers {
{{- range $upstream_services }}
server {{ .Address }}.{{ .Port }};
{{- end }}
}
{{- end }}