URL 中包含 Cookie 值的代理传递

URL 中包含 Cookie 值的代理传递

我想代理传递一个请求到请求中 cookie的值/foo/XXX/bar所在的位置。XXXmycookie

这在 Nginx 中很简单,但我在 Apache HTTPD 中找不到方法:

Nginx 解决方案

location ~ ^/foo/bar {
    proxy_pass http://localhost/foo/$cookie_cust/bar$is_args$args;
    proxy_set_header X-Forwarded-For $remote_addr;
}

如何ProxyPass在 Apache 2.4 中使用特定的 cookie 值?

答案1

不要使用 Apacheproxy_pass 指令,而要使用 mod_rewrite 规则。mod_rewrite[P | proxy]target 提供与 Apache 的 proxy_pass 指令类似的功能。

即类似于:(未经测试并且可能不适合您的目的)

RewriteCond %{HTTP_COOKIE} cookiename=([^;]+) [NC]
RewriteRule "/foo/bar/(.*)$" "http://localhost/foo/%1/bar/$1" [P]

其中 RewriteCond 与名为“cookiename”的 cookie 的值匹配,并且%1 目标 URL 中的 RewriteCond 反向引用该值

相关内容