diff --git a/server/server.go b/server/server.go
index 27d93064676f349119f7c19150a42033d9cfdc5f..21287b65e11ba985e3b22f8f8d5aa3d83aaab5a4 100644
--- a/server/server.go
+++ b/server/server.go
@@ -236,23 +236,31 @@ func newServer(ctx context.Context, c Config, rotationStrategy rotationStrategy)
 		}
 	}
 
-	requestCounter := prometheus.NewCounterVec(prometheus.CounterOpts{
-		Name: "http_requests_total",
-		Help: "Count of all HTTP requests.",
-	}, []string{"handler", "code", "method"})
-
-	err = c.PrometheusRegistry.Register(requestCounter)
-	if err != nil {
-		return nil, fmt.Errorf("server: Failed to register Prometheus HTTP metrics: %v", err)
-	}
-
 	instrumentHandlerCounter := func(handlerName string, handler http.Handler) http.HandlerFunc {
 		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-			m := httpsnoop.CaptureMetrics(handler, w, r)
-			requestCounter.With(prometheus.Labels{"handler": handlerName, "code": strconv.Itoa(m.Code), "method": r.Method}).Inc()
+			handler.ServeHTTP(w, r)
 		})
 	}
 
+	if c.PrometheusRegistry != nil {
+		requestCounter := prometheus.NewCounterVec(prometheus.CounterOpts{
+			Name: "http_requests_total",
+			Help: "Count of all HTTP requests.",
+		}, []string{"handler", "code", "method"})
+
+		err = c.PrometheusRegistry.Register(requestCounter)
+		if err != nil {
+			return nil, fmt.Errorf("server: Failed to register Prometheus HTTP metrics: %v", err)
+		}
+
+		instrumentHandlerCounter = func(handlerName string, handler http.Handler) http.HandlerFunc {
+			return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+				m := httpsnoop.CaptureMetrics(handler, w, r)
+				requestCounter.With(prometheus.Labels{"handler": handlerName, "code": strconv.Itoa(m.Code), "method": r.Method}).Inc()
+			})
+		}
+	}
+
 	r := mux.NewRouter()
 	handle := func(p string, h http.Handler) {
 		r.Handle(path.Join(issuerURL.Path, p), instrumentHandlerCounter(p, h))