如何用nginx代理/ grafana?

我已经安装并启动默认的Grafana,并按照预期在http:// localhost:3000上工作 。 我试图用nginx代理它,我已经安装了SSL。 我试图让它响应https:// localhost / grafana,但它只是服务于以下内容:

{{alert.title}} 

我有这在我的nginx服务器块:

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

看来nginx支持重写请求到代理服务器,所以更新configuration到这使它的工作:

 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 

添加到@AX-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/ 

注意位置块中的附加位置,这使得所有的区别。

供参考:

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

导致一些API调用的代理错误。 我发现:

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

在Docker上使用nginx和grafana时,我遇到了同样的问题,在两个不同的容器中。 将以下选项传递给docker-compose上的grafana服务,请参阅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

所以,为了解决这个问题,我在nginxconfiguration文件中join了下面的代码:

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