ProxyPassReverseCookieDomain动态变量

时间:2018-02-15 20:04:37

标签: apache cookies

我需要从域B中使用位于域A中的一些其他API。 登录服务负责设置cookie。使用代理我可以毫无问题地从B访问域A。

不幸的是,检查响应标头时,cookie域被设置为A,服务所在的位置,因此浏览器不会将cookie存储在域B中,从中调用服务。

在生产环境中,这不是问题,因为前端和后端属于同一个域。但是,在本地工作时,前端位于localhost上,后端位于虚拟机内。

我发现将cookie设置到另一个域的唯一方法是apache指令.*

效果很好。我可以设置ProxyPassReverseCookieDomain

问题是虚拟机内的所有其他服务都无法再获取cookie。

我想为指令设置动态变量,将cookie域设置为请求主机。 我已经按照apache文档中的建议尝试使用ProxyPassReverseCookieDomain virtualMachineHost myLocalDomain,但看起来变量未展开。它被视为一个字符串,因此cookie域设置为"%{HTTP_HOST}"。

有没有办法使用apache环境变量来实现它?

感谢。

1 个答案:

答案 0 :(得分:1)

我知道这已经很老了,我对正在运行的反向代理应用程序有相同的要求。不幸的是,我相信这是不可能的。另一方面,很简单的解决方法可能会实现我们俩想要的功能,请参见下文;

使用nginx作为apache反向代理之上的反向代理,配置非常简单 这就是你想要的“ proxy_cookie_domain”

server {
  listen 80; //or your port
  server_name *.example.com;
  access_log /var/log/nginx/example.log;
  location / {
    proxy_pass http://apache_proxy_servers;
    proxy_cookie_domain ~\.*$ $host; // this is your line
  }
}