基于主机的Apache重写规则

时间:2018-08-09 20:53:24

标签: mod-rewrite apache2 apache2.4

我有以下配置,基本上是在grafana前面的反向代理。我将/ logout请求转发到具有重定向URL的/ authin服务器和/ login URL到/ login / generic_oauth。

仅在grafana ui发出请求时,我才想将/ logout重定向到auth服务器。

如果请求是由其他任何来源发出的,则应转到反向代理并返回。基本上,当我从我的角度应用程序注销用户时,我也要注销用户我的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时一样,而不是它来自任何其他来源时

1 个答案:

答案 0 :(得分:0)

由于您将/代理到后端,并且您的客户端仅在带有引用您的代理的引用的代理上请求URL,因此您确实没有理由将/ logout处理作为条件。这样做很好,因为您出于相同的原因无法区分任何事物。