【发布时间】:2013-11-15 01:32:58
【问题描述】:
我需要使用清漆将domain.com 重写为www.domain.com。我已经为 Nginx 做到了。但不知道如何使用清漆。
让我解释一下我为什么要这样做,如果我的方法是错误的,请纠正我。
每当我使用domain.com 访问该站点时,我都有一个路径为.domain.com 的cookie。每当我使用www.domain.com 访问路径时,它都会创建一个路径为.www.domain.com 的新cookie
现在,同一用户的这两个 cookie 正在创建会话问题。
我希望如果我的服务器只接收像 www.domain.com 这样的请求,那么将没有与 domain.com 关联的 cookie 范围
所以理想情况下,问题是,重写是一种好方法吗?如果是,那么如何用 varnish 做到这一点,我已经尝试过使用 Nginx 但没有运气。
非常感谢任何指导。谢谢大家。
【问题讨论】:
-
如果你的 Nginx 发送 HTTP 重定向 Varnish 应该没有问题地中继它们,所以这应该可以正常工作,而不需要对 Varnish 做任何特殊的事情。相反会发生什么?您是否在配置中重新定义了
vcl_hash?测试前你清除缓存了吗? -
关于 cookie:您始终可以在保存 cookie 时将 cookie 域显式设置为
.domain.com,这在将其设置为www.domain.com时也会起作用。 -
@LudwikTrammer 这正是我所做的。我必须明确地将
req.http.host设置为www.domain.com谢谢 -
如果您正在重播我评论的第二部分 - 我的意思是在设置 cookie 时 - 在 PHP、Django、Rails、Node 或任何您用作后端的东西中。您可以将 cookie 域显式设置为
.domain.com,即使您是从www.domain.com设置它 - 这将为您提供跨子域的一致 cookie,根本不需要重定向。 -
@LudwikTrammer 当然我明白了。但是 varnish VCL 中存在一些错误。这是别人写的。它操纵cookie。理想情况下,varnish 不应该修改 cookie。我不得不在 VCL 中硬编码主机名。
标签: nginx rewrite varnish varnish-vcl