小编xeo*_*000的帖子

如何使用Apache重写代理设置中的位置响应头?

我有一个主代理,它将请求发送到安装了OpeenSSO的辅助代理.

如果OpenSSO代理确定用户未登录,则会将302重定向引发到身份验证服务器,并提供用户在重定向位置标头中请求的原始(编码)URL作为GET参数.

但是,GET变量中的URL是内部(辅助)代理服务器的URL,而不是原始代理服务器.因此,我想编辑/重写"位置"响应标头以提供正确的URL.

例如

  1. http://a.com/hello/(原始请求的URL)
  2. http://a.com/hello2/ (使用OpenSSO代理的辅助代理)
  3. http://auth.a.com/login/?orig_request=http%3A%2F%2Fa.com%2Fhello2%2F(302重定向到auth服务器,其中第二代理服务器的请求URL以GET变量编码)
  4. http://auth.a.com/login/?orig_request=http%3A%2F%2Fa.com%2Fhello%2F(编码的URL被重写为原始请求的URL)

我已经尝试过几乎所有标题和重写的组合而没有运气,所以我认为这可能是不可能的.我得到的最接近的是这个,但mod_headers编辑函数不解析环境变量.

# On the primary proxy.
RewriteEngine On
RewriteRule ^/(.*)$ - [E=orig_request:$1,P]
Header edit Location ^(http://auth\.a\.com/login/\?orig_request=).*$ "$1http%3A%2F%2Fa.com%2F%{orig_request}e"
Run Code Online (Sandbox Code Playgroud)

apache reverse-proxy url-rewriting response-headers

10
推荐指数
1
解决办法
3万
查看次数