diff --git a/http/web.go b/http/web.go index 4137d07..86c4ad4 100644 --- a/http/web.go +++ b/http/web.go @@ -152,7 +152,11 @@ func (w *loggingWriter) Done() { tlsinfo = "(other)" } } - xlog.WithContext(w.R.Context()).Debugx("http request", w.WriteErr, + err := w.WriteErr + if err == nil { + err = w.R.Context().Err() + } + xlog.WithContext(w.R.Context()).Debugx("http request", err, mlog.Field("httpaccess", ""), mlog.Field("handler", w.Handler), mlog.Field("method", method), diff --git a/http/webserver.go b/http/webserver.go index 666ea64..fafb7d9 100644 --- a/http/webserver.go +++ b/http/webserver.go @@ -1,6 +1,7 @@ package http import ( + "context" "errors" "fmt" htmltemplate "html/template" @@ -415,6 +416,10 @@ func HandleForward(h *config.WebForward, w http.ResponseWriter, r *http.Request, proxy.FlushInterval = time.Duration(-1) // Flush after each write. proxy.ErrorLog = golog.New(mlog.ErrWriter(mlog.New("net/http/httputil").WithContext(r.Context()), mlog.LevelDebug, "reverseproxy error"), "", 0) proxy.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) { + if errors.Is(err, context.Canceled) { + log().Debugx("forwarding request to backend webserver", err, mlog.Field("url", r.URL)) + return + } log().Errorx("forwarding request to backend webserver", err, mlog.Field("url", r.URL)) if os.IsTimeout(err) { http.Error(w, "504 - gateway timeout"+recvid(), http.StatusGatewayTimeout)