Apache反向代理无法与Grafana一起使用
我把头发拔出来是因为它一定很简单 我已经设置Grafana通过代理运行子域,效果很好。我正在进行基本身份验证以登录到Grafana,这是我的apache配置:Apache反向代理无法与Grafana一起使用,apache,redirect,proxy,grafana,Apache,Redirect,Proxy,Grafana,我把头发拔出来是因为它一定很简单 我已经设置Grafana通过代理运行子域,效果很好。我正在进行基本身份验证以登录到Grafana,这是我的apache配置: <VirtualHost *:80> ServerAdmin webmaster@example.co ServerName example.co ServerAlias www.example.co DocumentRoot /var/www/example.co/publi
<VirtualHost *:80>
ServerAdmin webmaster@example.co
ServerName example.co
ServerAlias www.example.co
DocumentRoot /var/www/example.co/public_html/
ErrorLog /var/www/example.co/logs/error.log
CustomLog /var/www/example.co/logs/access.log combined
<Location "/application">
AuthType Basic
AuthName "Graphs Login"
AuthUserFile /var/www/example.co/members/.htpasswd
Require valid-user
ProxyPass http://localhost:3000/
</Location>
ProxyPassReverse /application http://example.co:3000/
</VirtualHost>
我还尝试通过301重定向来实现这一点:
Redirect 301 /application http://example.co/application/
<Location "/application/">
AuthType Basic
AuthName "Graphs Login"
AuthUserFile /var/www/example.co/members/.htpasswd
Require valid-user
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
重定向301/应用程序http://example.co/application/
AuthType Basic
AuthName“图形登录”
AuthUserFile/var/www/example.co/members/.htpasswd
需要有效用户
ProxyPasshttp://localhost:3000/
ProxyPassReversehttp://localhost:3000/
到域的代理传递工作正常,但是如果我使用IP地址,它不会到域,而是尝试将其加载为IP:3000/application,然后会出现Grafana错误(带有{{alert.title}的空白页)
知道我做错了什么吗?知道我如何将IP:3000重定向到DOMAIN:3000,比如ProxyPass使用反向代理所做的吗
我正在使用Ubuntu 12.04
我做过各种各样的事情,比如添加尾部斜杠,从apache和grafana配置中删除斜杠,我每次都使用incognito来确保没有缓存,我只是无法让它在反向代理中工作,我试图将IP重定向到我在grafana和ProxyPass中设置的域
请帮忙 我不能100%确定这是否是问题所在。但是,让我们尝试一下:尝试删除ProxyPass指令后的斜杠:
ProxyPass /application http://localhost:3000
ProxyPassReverse /application http://localhost:3000
格拉法纳似乎对那些割伤非常挑剔。我对这些小家伙有几个问题:)我将在下面进一步解释细节。一个非常简单的工作设置(尽管没有特定的身份验证)如下所示:
阿帕奇
说明:斜杠
接下来,我解释了我所理解的意外行为的原因。为了完整性起见,除了代理设置之外,我还添加了一个与某些重写规则有关的问题
代理
那么,如果你保留斜线会发生什么
# WRONG!
ProxyPass /application http://localhost:3000/
ProxyPassReverse /application http://localhost:3000/
在本例中,您从Grafana得到的响应是一个丑陋的页面,显示{{alert.title}
和一堆其他未格式化的HTML。原因是Grafana无法加载某些资源:
http://example.co/application/public/build/grafana.dark.css?v5.2.4
http://example.co/application/public/build/vendor.4f5454f867a0cc2fe8dd.js
但是,您的代理设置工作正常,对吗?嗯,部分。它们有一个小斜杠/
,导致在您的Grafana安装上进行以下查找:
http://localhost:3000//public/build/grafana.dark.css?v5.2.4
http://localhost:3000//application/public/build/vendor.4f5454f867a0cc2fe8dd.js
注意http://localhost:3000
。尝试调用这些URL。它们不起作用。这是因为Grafana对URL非常挑剔:)因此,从Apache配置中删除额外的斜杠就可以了。
至少到目前为止我是这么想的:)
重写
不,重写规则。在我们的设置中,Jekyll设置在另一个子路径中,例如http://example.co/jekyll
我们使用相对URL来访问资源。这需要在每个URL的末尾加一个斜杠。我们通过在Apache中添加以下重写规则来解决此问题(可能有更好的解决方案;如果您有建议,请告诉我):
这在格拉法纳身上产生了一些有趣的效果:
- 我们无法登录
- 管理员/管理员帐户工作正常,但在更改默认密码时遇到了问题
- 所有数据源都消失了
# add trailing slashes to support relative URLs
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !(.*)\.[a-zA-Z0-9]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_URI} ^jekyll.*$
RewriteRule ^(.*)$ $1/ [R=301,L]
让我知道这是否有帮助:)我不能100%确定这是否是问题所在。但是,让我们尝试一下:尝试在ProxyPass指令之后删除斜杠:
ProxyPass /application http://localhost:3000
ProxyPassReverse /application http://localhost:3000
Grafana似乎对这些斜杠非常挑剔。我对这些小错误有几个问题:)我将在下面进一步解释细节。一个非常简单的工作设置(尽管没有特定的身份验证)如下所示:
阿帕奇
说明:斜杠
接下来,我解释了据我所知的意外行为的原因。为了完整性起见,我还添加了一个问题,除了代理设置之外,我还有一些重写规则
代理
那么,如果你保留斜线会发生什么
# WRONG!
ProxyPass /application http://localhost:3000/
ProxyPassReverse /application http://localhost:3000/
在本例中,您从Grafana得到的响应是一个丑陋的页面,显示{{alert.title}
和一堆其他未格式化的HTML。原因是Grafana无法加载某些资源:
http://example.co/application/public/build/grafana.dark.css?v5.2.4
http://example.co/application/public/build/vendor.4f5454f867a0cc2fe8dd.js
但是,您的代理设置工作正常,对吗?嗯,部分。它们有一个小斜杠/
,导致在您的Grafana安装上进行以下查找:
http://localhost:3000//public/build/grafana.dark.css?v5.2.4
http://localhost:3000//application/public/build/vendor.4f5454f867a0cc2fe8dd.js
注意http://localhost:3000
。尝试调用这些URL。它们不起作用。这是因为Grafana对URL非常挑剔:)因此,从Apache配置中删除额外的斜杠就可以了。
至少到目前为止我是这么想的:)
重写
不,重写规则。在我们的设置中,Jekyll设置在另一个子路径中,例如http://example.co/jekyll
我们使用相对URL来访问资源。这需要在每个URL的末尾加一个斜杠。我们通过在Apache中添加以下重写规则来解决此问题(可能有更好的解决方案;如果您有建议,请告诉我):
这在格拉法纳身上产生了一些有趣的效果:
- 我们无法登录
- 管理员/管理员帐户工作正常,但在更改默认密码时遇到了问题
- 所有数据源都消失了
# add trailing slashes to support relative URLs
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !(.*)\.[a-zA-Z0-9]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_URI} ^jekyll.*$
RewriteRule ^(.*)$ $1/ [R=301,L]
如果有帮助,请告诉我:)