From 297cc63e5d889ee6631fe6749deebae2e5cd54aa Mon Sep 17 00:00:00 2001 From: Erwin van Eyk Date: Thu, 19 Sep 2019 18:46:42 +0200 Subject: [PATCH] Fix externalURL and path prefix issues (#1026) --- pkg/promtail/server/server.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pkg/promtail/server/server.go b/pkg/promtail/server/server.go index 6865ee3ba6fe..2d135421567b 100644 --- a/pkg/promtail/server/server.go +++ b/pkg/promtail/server/server.go @@ -1,11 +1,11 @@ package server import ( - "context" "fmt" "net/http" "net/url" "os" + "path" "sort" "strings" "text/template" @@ -49,13 +49,15 @@ func New(cfg Config, tms *targets.TargetManagers) (*Server, error) { if err != nil { return nil, errors.Wrapf(err, "parse external URL %q", cfg.ExternalURL) } + cfg.PathPrefix = externalURL.Path + serv := &Server{ Server: wws, tms: tms, externalURL: externalURL, } - serv.HTTP.Path("/").Handler(http.RedirectHandler("/targets", 303)) + serv.HTTP.Path("/").Handler(http.RedirectHandler(path.Join(serv.externalURL.Path, "/targets"), 303)) serv.HTTP.Path("/ready").Handler(http.HandlerFunc(serv.ready)) serv.HTTP.PathPrefix("/static/").Handler(http.FileServer(ui.Assets)) serv.HTTP.Path("/service-discovery").Handler(http.HandlerFunc(serv.serviceDiscovery)) @@ -65,7 +67,7 @@ func New(cfg Config, tms *targets.TargetManagers) (*Server, error) { } // serviceDiscovery serves the service discovery page. -func (s *Server) serviceDiscovery(rw http.ResponseWriter, _ *http.Request) { +func (s *Server) serviceDiscovery(rw http.ResponseWriter, req *http.Request) { var index []string allTarget := s.tms.AllTargets() for job := range allTarget { @@ -103,7 +105,7 @@ func (s *Server) serviceDiscovery(rw http.ResponseWriter, _ *http.Request) { } } - executeTemplate(context.Background(), rw, templateOptions{ + executeTemplate(req.Context(), rw, templateOptions{ Data: scrapeConfigData, BuildVersion: version.Info(), Name: "service-discovery.html", @@ -133,8 +135,8 @@ func (s *Server) serviceDiscovery(rw http.ResponseWriter, _ *http.Request) { } // targets serves the targets page. -func (s *Server) targets(rw http.ResponseWriter, _ *http.Request) { - executeTemplate(context.Background(), rw, templateOptions{ +func (s *Server) targets(rw http.ResponseWriter, req *http.Request) { + executeTemplate(req.Context(), rw, templateOptions{ Data: struct { TargetPools map[string][]targets.Target }{