diff --git a/daemon/routes.go b/daemon/routes.go
index 74445c346e11f10518bb699208882514d3a086ae..f11e6d647d10339c724cdc4db1ae948bc224e616 100644
--- a/daemon/routes.go
+++ b/daemon/routes.go
@@ -39,6 +39,7 @@ func routes(cfg *config.Config, store *storage.Storage, feedHandler *feed.Handle
 		router = router.PathPrefix(cfg.BasePath()).Subrouter()
 	}
 
+	router.Use(middleware.HeaderConfig)
 	router.Use(middleware.Logging)
 
 	router.HandleFunc("/healthcheck", func(w http.ResponseWriter, r *http.Request) {
diff --git a/http/handler/handler.go b/http/handler/handler.go
index 59e8acd55c9478cac723e618d95d4aad06dbb14b..137ff110648c46929aafc913d9491e5b74854147 100644
--- a/http/handler/handler.go
+++ b/http/handler/handler.go
@@ -34,10 +34,6 @@ func (h *Handler) Use(f ControllerFunc) http.Handler {
 	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		defer timer.ExecutionTime(time.Now(), r.URL.Path)
 
-		if r.Header.Get("X-Forwarded-Proto") == "https" {
-			h.cfg.IsHTTPS = true
-		}
-
 		ctx := NewContext(r, h.store, h.router, h.translator)
 		request := NewRequest(r)
 		response := NewResponse(h.cfg, w, r, h.template)
diff --git a/middleware/header_config.go b/middleware/header_config.go
new file mode 100644
index 0000000000000000000000000000000000000000..91d182010644ec734f5861083aa05665f3daf83b
--- /dev/null
+++ b/middleware/header_config.go
@@ -0,0 +1,19 @@
+// Copyright 2018 Frédéric Guillot. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+
+package middleware
+
+import (
+	"net/http"
+)
+
+// HeaderConfig changes config values according to HTTP headers.
+func (m *Middleware) HeaderConfig(next http.Handler) http.Handler {
+	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+		if r.Header.Get("X-Forwarded-Proto") == "https" {
+			m.cfg.IsHTTPS = true
+		}
+		next.ServeHTTP(w, r)
+	})
+}