如何使用 nginx 代理 /grafana?

如何使用 nginx 代理 /grafana?

我已经设置并启动了默认的grafana,它按预期工作http://本地主机:3000。我尝试使用安装了 SSL 的 nginx 代理它。我尝试让它响应https://localhost/grafana但它只起到以下作用:

{{alert.title}}

我的 nginx 服务器块中有这个:

location /grafana {
     proxy_pass         http://localhost:3000;
     proxy_set_header   Host $host;
}

答案1

似乎 nginx 支持重写对代理服务器的请求,因此将配置更新为如下形式可以使其工作:

location /grafana {
     proxy_pass         http://localhost:3000;
     rewrite  ^/grafana/(.*)  /$1 break;
     proxy_set_header   Host $host;
}

我的 grafana.ini 也有一个更新的根:

[server]
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana

答案2

添加到@AXE-Labs 答案,您不需要重写 URL。

nginx.conf

location /grafana/ {
     proxy_pass         http://localhost:3000/;
     proxy_set_header   Host $host;
}

grafana.ini update root:

[server]
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/

请注意位置块中的附加 /,这造成了很大的不同。

如果您想查看整个文件,请访问https://gist.github.com/mvadu/5fbb7f5676ce31f2b1e6我为 Infludb 和 grafana 设置了反向代理。

答案3

我在 docker 上的两个不同容器中使用 nginx 和 grafana 时遇到了同样的问题。将以下选项传递给 grafana 服务上的 docker-compose,如下所示http://docs.grafana.org/installation/behind_proxy/#nginx-configuration-with-sub-path

- GF_SERVER_DOMAIN=foo.bar.com
- GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s:/grafana

但它不起作用,我的浏览器的控制台显示:net::ERR_CONTENT_LENGTH_MISMATCH

因此,为了修复此问题,我在 nginx 配置中添加了以下行:

location /grafana/ {
  proxy_pass http://monitoring_grafana:3000/;
  proxy_max_temp_file_size 0; # THIS MADE THE TRICK!
}

答案4

供参考:

root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana

导致某些 API 调用出现代理错误。我发现:

root_url = %(protocol)s://%(domain)s:/grafana

相关内容