HTTP Server: Serve Grafana with a custom URL path prefix (#17048)

Adds a new [server] setting `serve_from_sub_path`. By enabling 
this setting and using a subpath in `root_url` setting, e.g.
`root_url = http://localhost:3000/grafana`, Grafana will be accessible 
on `http://localhost:3000/grafana`. By default it is set to `false` 
for compatibility reasons.

Closes #16623
This commit is contained in:
Abhilash Gnan
2019-05-27 17:47:29 +02:00
committed by Marcus Efraimsson
parent b547a0cb34
commit 04d473b3e5
5 changed files with 31 additions and 7 deletions

View File

@@ -30,7 +30,7 @@ import (
"github.com/grafana/grafana/pkg/setting"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"gopkg.in/macaron.v1"
macaron "gopkg.in/macaron.v1"
)
func init() {
@@ -227,6 +227,10 @@ func (hs *HTTPServer) addMiddlewaresAndStaticRoutes() {
m.Use(middleware.AddDefaultResponseHeaders())
if setting.ServeFromSubPath && setting.AppSubUrl != "" {
m.SetURLPrefix(setting.AppSubUrl)
}
m.Use(macaron.Renderer(macaron.RenderOptions{
Directory: path.Join(setting.StaticRootPath, "views"),
IndentJSON: macaron.Env != macaron.PROD,

View File

@@ -47,10 +47,11 @@ var (
var (
// App settings.
Env = DEV
AppUrl string
AppSubUrl string
InstanceName string
Env = DEV
AppUrl string
AppSubUrl string
ServeFromSubPath bool
InstanceName string
// build
BuildVersion string
@@ -205,8 +206,9 @@ type Cfg struct {
Logger log.Logger
// HTTP Server Settings
AppUrl string
AppSubUrl string
AppUrl string
AppSubUrl string
ServeFromSubPath bool
// Paths
ProvisioningPath string
@@ -610,8 +612,11 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error {
if err != nil {
return err
}
ServeFromSubPath = server.Key("serve_from_sub_path").MustBool(false)
cfg.AppUrl = AppUrl
cfg.AppSubUrl = AppSubUrl
cfg.ServeFromSubPath = ServeFromSubPath
Protocol = HTTP
protocolStr, err := valueAsString(server, "protocol", "http")