@@ -62,10 +62,12 @@ type Config struct {
62
62
HTTPServerWriteTimeout time.Duration `yaml:"http_server_write_timeout"`
63
63
HTTPServerIdleTimeout time.Duration `yaml:"http_server_idle_timeout"`
64
64
65
- GRPCOptions []grpc.ServerOption `yaml:"-"`
66
- GRPCMiddleware []grpc.UnaryServerInterceptor `yaml:"-"`
67
- GRPCStreamMiddleware []grpc.StreamServerInterceptor `yaml:"-"`
68
- HTTPMiddleware []middleware.Interface `yaml:"-"`
65
+ GRPCOptions []grpc.ServerOption `yaml:"-"`
66
+ GRPCMiddleware []grpc.UnaryServerInterceptor `yaml:"-"`
67
+ GRPCStreamMiddleware []grpc.StreamServerInterceptor `yaml:"-"`
68
+ HTTPMiddleware []middleware.Interface `yaml:"-"`
69
+ Router * mux.Router `yaml:"-"`
70
+ DoNotAddDefaultHTTPMiddleware bool `yaml:"-"`
69
71
70
72
GPRCServerMaxRecvMsgSize int `yaml:"grpc_server_max_recv_msg_size"`
71
73
GRPCServerMaxSendMsgSize int `yaml:"grpc_server_max_send_msg_size"`
@@ -270,7 +272,12 @@ func New(cfg Config) (*Server, error) {
270
272
grpcServer := grpc .NewServer (grpcOptions ... )
271
273
272
274
// Setup HTTP server
273
- router := mux .NewRouter ()
275
+ var router * mux.Router
276
+ if cfg .Router != nil {
277
+ router = cfg .Router
278
+ } else {
279
+ router = mux .NewRouter ()
280
+ }
274
281
if cfg .PathPrefix != "" {
275
282
// Expect metrics and pprof handlers to be prefixed with server's path prefix.
276
283
// e.g. /loki/metrics or /loki/debug/pprof
@@ -279,14 +286,16 @@ func New(cfg Config) (*Server, error) {
279
286
if cfg .RegisterInstrumentation {
280
287
RegisterInstrumentation (router )
281
288
}
289
+
282
290
var sourceIPs * middleware.SourceIPExtractor
283
291
if cfg .LogSourceIPs {
284
292
sourceIPs , err = middleware .NewSourceIPs (cfg .LogSourceIPsHeader , cfg .LogSourceIPsRegex )
285
293
if err != nil {
286
294
return nil , fmt .Errorf ("error setting up source IP extraction: %v" , err )
287
295
}
288
296
}
289
- httpMiddleware := []middleware.Interface {
297
+
298
+ defaultHTTPMiddleware := []middleware.Interface {
290
299
middleware.Tracer {
291
300
RouteMatcher : router ,
292
301
SourceIPs : sourceIPs ,
@@ -303,8 +312,13 @@ func New(cfg Config) (*Server, error) {
303
312
InflightRequests : inflightRequests ,
304
313
},
305
314
}
315
+ httpMiddleware := []middleware.Interface {}
316
+ if cfg .DoNotAddDefaultHTTPMiddleware {
317
+ httpMiddleware = cfg .HTTPMiddleware
318
+ } else {
319
+ httpMiddleware = append (defaultHTTPMiddleware , cfg .HTTPMiddleware ... )
320
+ }
306
321
307
- httpMiddleware = append (httpMiddleware , cfg .HTTPMiddleware ... )
308
322
httpServer := & http.Server {
309
323
ReadTimeout : cfg .HTTPServerReadTimeout ,
310
324
WriteTimeout : cfg .HTTPServerWriteTimeout ,
0 commit comments