From 0c9795a9645c78c8f009e0dcaa6df4f4d8979202 Mon Sep 17 00:00:00 2001 From: Amnay Date: Sun, 24 May 2020 22:09:00 +0200 Subject: [PATCH] render error page on 502 proxy status (#574) Co-authored-by: Amnay Mokhtari --- CHANGELOG.md | 1 + oauthproxy.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73f91e9c..01acb1b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,7 @@ ## Changes since v5.1.1 +- [#574](https://github.com/oauth2-proxy/oauth2-proxy/pull/574) render error page on 502 proxy status (@amnay-mo) - [#559](https://github.com/oauth2-proxy/oauth2-proxy/pull/559) Rename cookie-domain config to cookie-domains (@JoelSpeed) - [#569](https://github.com/oauth2-proxy/oauth2-proxy/pull/569) Updated autocompletion for `--` long options. (@Izzette) - [#489](https://github.com/oauth2-proxy/oauth2-proxy/pull/489) Move Options and Validation to separate packages (@JoelSpeed) diff --git a/oauthproxy.go b/oauthproxy.go index c7dc3145..a5bd7d94 100644 --- a/oauthproxy.go +++ b/oauthproxy.go @@ -154,9 +154,28 @@ func NewReverseProxy(target *url.URL, opts *options.Options) (proxy *httputil.Re TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } } + setProxyErrorHandler(proxy, opts) return proxy } +func setProxyErrorHandler(proxy *httputil.ReverseProxy, opts *options.Options) { + templates := loadTemplates(opts.CustomTemplatesDir) + proxy.ErrorHandler = func(w http.ResponseWriter, r *http.Request, proxyErr error) { + logger.Printf("Error proxying to upstream server: %v", proxyErr) + w.WriteHeader(http.StatusBadGateway) + data := struct { + Title string + Message string + ProxyPrefix string + }{ + Title: "Bad Gateway", + Message: "Error proxying to upstream server", + ProxyPrefix: opts.ProxyPrefix, + } + templates.ExecuteTemplate(w, "error.html", data) + } +} + func setProxyUpstreamHostHeader(proxy *httputil.ReverseProxy, target *url.URL) { director := proxy.Director proxy.Director = func(req *http.Request) {