@@ -62,10 +62,12 @@ type Config struct {
6262 HTTPServerWriteTimeout time.Duration `yaml:"http_server_write_timeout"`
6363 HTTPServerIdleTimeout time.Duration `yaml:"http_server_idle_timeout"`
6464
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:"-"`
6971
7072 GPRCServerMaxRecvMsgSize int `yaml:"grpc_server_max_recv_msg_size"`
7173 GRPCServerMaxSendMsgSize int `yaml:"grpc_server_max_send_msg_size"`
@@ -270,7 +272,12 @@ func New(cfg Config) (*Server, error) {
270272 grpcServer := grpc .NewServer (grpcOptions ... )
271273
272274 // 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+ }
274281 if cfg .PathPrefix != "" {
275282 // Expect metrics and pprof handlers to be prefixed with server's path prefix.
276283 // e.g. /loki/metrics or /loki/debug/pprof
@@ -279,14 +286,16 @@ func New(cfg Config) (*Server, error) {
279286 if cfg .RegisterInstrumentation {
280287 RegisterInstrumentation (router )
281288 }
289+
282290 var sourceIPs * middleware.SourceIPExtractor
283291 if cfg .LogSourceIPs {
284292 sourceIPs , err = middleware .NewSourceIPs (cfg .LogSourceIPsHeader , cfg .LogSourceIPsRegex )
285293 if err != nil {
286294 return nil , fmt .Errorf ("error setting up source IP extraction: %v" , err )
287295 }
288296 }
289- httpMiddleware := []middleware.Interface {
297+
298+ defaultHTTPMiddleware := []middleware.Interface {
290299 middleware.Tracer {
291300 RouteMatcher : router ,
292301 SourceIPs : sourceIPs ,
@@ -303,8 +312,13 @@ func New(cfg Config) (*Server, error) {
303312 InflightRequests : inflightRequests ,
304313 },
305314 }
315+ httpMiddleware := []middleware.Interface {}
316+ if cfg .DoNotAddDefaultHTTPMiddleware {
317+ httpMiddleware = cfg .HTTPMiddleware
318+ } else {
319+ httpMiddleware = append (defaultHTTPMiddleware , cfg .HTTPMiddleware ... )
320+ }
306321
307- httpMiddleware = append (httpMiddleware , cfg .HTTPMiddleware ... )
308322 httpServer := & http.Server {
309323 ReadTimeout : cfg .HTTPServerReadTimeout ,
310324 WriteTimeout : cfg .HTTPServerWriteTimeout ,
0 commit comments