Sha*_*man 3 nginx consul consul-template nginx-reverse-proxy
我刚刚继承了一个 Nginx 代理/应用程序服务器设置,它使用 Consul 和 Consul Template 进行服务发现和注册。Nginx 代理有一个配置文件,其中包含如下条目,用于注册下游应用程序服务器:
<snip>
upstream appservers {
{{ range service "my-app-servers" }}
server {{ .Address }}.{{ .Port }};
{{ end }}
}
<snip>
Run Code Online (Sandbox Code Playgroud)
我consul-template在后台运行以捕获任何更新my-app-servers,适当更新nginx.conf文件,然后重新加载 nginx 配置。这一切都很有效,我们可以根据需要在组合中添加和删除应用程序服务器。也就是说,如果存在没有可用应用程序服务器的情况,我们最终会得到一个空upstream块,从而导致 nginx 重新加载失败。
consul-template 有没有办法拥有"if service my-app-servers exists, then..."逻辑"if not, then..."?我希望能够让我的nginx.conf文件具有针对上游服务器存在的情况的一种配置,以及另一种在上游服务器不存在时显示错误页面的应急设置。我仍在了解 consul-template 的最新进展,并且还没有看到任何显示此类逻辑语法的示例。有什么帮助吗?
小智 5
您可以通过将查找结果存储service在变量中,然后使用仅在变量不为空时输出上游块的条件来实现此目的。
{{- $upstream_services := service "my-app-servers" -}}
{{- if $upstream_services -}}
upstream appservers {
{{- range $upstream_services }}
server {{ .Address }}.{{ .Port }};
{{- end }}
}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1460 次 |
| 最近记录: |