基于主机的 Apache 重写规则



我有以下配置,基本上是grafana前面的反向代理。我将/logout 请求转发到带有重定向 url 的身份验证服务器,并将/login url 转发到/login/generic_oauth。

我想将/logout 重定向到身份验证服务器,仅当请求来自 grafana 本身时,仅当 grafana ui 发出请求时。

如果请求是由任何其他源发出的,则应转到反向代理并返回。基本上,当我从我的角度应用程序中注销用户时,我也要注销用户我的 grafana 应用程序。但是当我将/logout 链接到身份验证服务器重定向时,我在发出请求时出现 cors 错误。

RewriteEngine on
RewriteRule ^/logout - [C]
I want to excute this rule only if the request is from http://grafana-ip:3001
RewriteRule . "https://auth-server-ip:31443/auth/realms/MDC/protocol/openid-connect/logout?redirect_uri=http://auth-server-ip:8081/login" [NE,R=302,CO=grafana_sess:INVALID:;]
RewriteRule ^/login$ /login/generic_oauth [L,R=302]
ProxyPass / http://grafana-ip:3001/
ProxyPassReverse / http://grafana-ip:3001/
RequestHeader set X-Forwarded-Proto "https"
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "*"

有什么方法可以按原样执行规则,当请求来自 grafana-ip 时,而不是当它来自任何其他来源时

由于您代理/到后端,并且您的客户端仅在您的代理上请求带有引用您的代理的引用者的URL,因此您真的没有理由使/logout处理有条件。这很好,因为出于同样的原因,您没有能力歧视任何事情。

最新更新