如何使用Nginx代理/ grafana?


15

我已经设置并启动了默认grafana,它在http:// localhost:3000上可以正常工作。我正在尝试使用安装了ssl的nginx代理它。我正在尝试让它响应https:// localhost / grafana,但它仅提供以下服务:

{{alert.title}}

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

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

Answers:


27

似乎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

我可以确认这可行。请注意,由于静态资产,nginx重写和root_url配置都是必需的,但是在Grafana 2.2中,它可以解决问题。
曼恩,2015年

2
另外,如果您在nginx到达grafana之前在nginx之前拥有基本的http auth,请确保Authorization通过proxy_set_header Authorization "";在代理位置块中包含来覆盖标头,否则Grafana会坚持将这些凭据用于数据源连接。
曼恩,2015年

重写规则对于使其起作用至关重要。这应该真正在被添加到Grafana文档docs.grafana.org/installation/behind_proxy
dasup

@dasup否,不需要重写规则(至少在grafana 4.6中不需要)。您需要设置proxy_pass为包含URI之类的/,否则请求将原样传递(有关说明,另请参见nginx.com/resources/admin-guide/reverse-proxy)。因此,配置应该proxy_pass http://localhost:3000/;正是grafana文档所声明的。
ChrisWue

10

除了@ 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设置代理版本。


1
是的,差异在这里进行了解释:nginx.com/resources/admin-guide/reverse-proxy
ChrisWue

2
请注意,尾部的斜杠http://localhost:3000/;也很重要。
bitnik

并且%(protocol)s://%(domain)s:%(http_port)s/grafana/-所有位置都应带有斜杠。
patricktokeeffe

3

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

- 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!
}

0

仅供参考:

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

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

root_url = %(protocol)s://%(domain)s:/grafana
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.