서비스 검색 및 등록을 위해 Consul 및 Consul 템플릿을 사용하는 Nginx 프록시 / 앱 서버 설정을 상속했습니다. Nginx 프록시에는 다운 스트림 앱 서버를 등록하기위한 다음과 같은 항목이있는 구성 파일이 있습니다.
<snip>
upstream appservers {
{{ range service "my-app-servers" }}
server {{ .Address }}.{{ .Port }};
{{ end }}
}
<snip>
에 consul-template
대한 업데이트를 포착 my-app-servers
하고 nginx.conf
파일을 적절하게 업데이트 한 다음 nginx 구성을 다시로드 하기 위해 백그라운드에서 실행 중입니다 . 이 모든 것이 훌륭하게 작동하며 필요에 따라 믹스에서 앱 서버를 추가 및 제거 할 수 있습니다. 즉, 사용 가능한 앱 서버 가 없는 시나리오가있는 경우 빈 upstream
블록으로 끝나고 nginx가 다시로드에 실패합니다.
가지고 영사 템플릿에 방법이 "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 }}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다