git.iko.soy/typeable/oauth2-proxy
on master help sign in
render error page on 502 proxy status (#574)

Co-authored-by: Amnay Mokhtari <amnay.mokhtari@adevinta.com>

commit0c9795a9645c78c8f009e0dcaa6df4f4d8979202 authorAmnay <amnay.m@gmail.com> dateSun 24 May 2020, 22:09 (6 years ago) parent810a9e9
2 files changed+20
CHANGELOG.md+1 oauthproxy.go+19
CHANGELOG.md+1
@@ -46,6 +46,7 @@
4646
4747## Changes since v5.1.1
4848
49+- [#574](https://github.com/oauth2-proxy/oauth2-proxy/pull/574) render error page on 502 proxy status (@amnay-mo)
4950- [#559](https://github.com/oauth2-proxy/oauth2-proxy/pull/559) Rename cookie-domain config to cookie-domains (@JoelSpeed)
5051- [#569](https://github.com/oauth2-proxy/oauth2-proxy/pull/569) Updated autocompletion for `--` long options. (@Izzette)
5152- [#489](https://github.com/oauth2-proxy/oauth2-proxy/pull/489) Move Options and Validation to separate packages (@JoelSpeed)
oauthproxy.go+19
@@ -154,9 +154,28 @@ func NewReverseProxy(target *url.URL, opts *options.Options) (proxy *httputil.Re
154154 TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
155155 }
156156 }
157+ setProxyErrorHandler(proxy, opts)
157158 return proxy
158159}
159160
161+func setProxyErrorHandler(proxy *httputil.ReverseProxy, opts *options.Options) {
162+ templates := loadTemplates(opts.CustomTemplatesDir)
163+ proxy.ErrorHandler = func(w http.ResponseWriter, r *http.Request, proxyErr error) {
164+ logger.Printf("Error proxying to upstream server: %v", proxyErr)
165+ w.WriteHeader(http.StatusBadGateway)
166+ data := struct {
167+ Title string
168+ Message string
169+ ProxyPrefix string
170+ }{
171+ Title: "Bad Gateway",
172+ Message: "Error proxying to upstream server",
173+ ProxyPrefix: opts.ProxyPrefix,
174+ }
175+ templates.ExecuteTemplate(w, "error.html", data)
176+ }
177+}
178+
160179func setProxyUpstreamHostHeader(proxy *httputil.ReverseProxy, target *url.URL) {
161180 director := proxy.Director
162181 proxy.Director = func(req *http.Request) {