我想代理传递一个请求到请求中 cookie的值/foo/XXX/bar
所在的位置。XXX
mycookie
这在 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 反向引用该值