一、背景介绍
由于生产环境只能暴露一个80端口,但是我们又想让grafana服务器能够被外网访问到,所以只能通过虚拟路径的方式访问,访问结构如下图:
二、问题描述
但是在使用nginx反向代理访问grafana的时候报这个错误:
nginx配置如下:
location /grafana/ {
proxy_pass http://192.168.10.1:8080;
}
三、原因分析
导致这个问题的原因是grafana的login页面里面引用的css和js文件的路径是相对路径,如下所示:
当这个路径返回给浏览器后,浏览器从这个路径访问对应的js和css文件是访问不到的,因为当前是在DMZ的nginx服务器上,DMZ服务器是没有这些js和css文件的,我们必须也通过反向代理访问内网区的grafana服务器上的js和css文件才行,要访问grafana服务器上的js和css文件,需要有/grafana路径前缀,否则无法被nginx反向代理。