Nginx强制SSL(https)与cookie转发

时间:2013-01-12 06:29:47

标签: session cookies ssl nginx rewrite

我强迫SSL使用nginx中的虚拟主机:

if ($ssl_protocol = "") {
    rewrite ^ https://www.mydomain.com$request_uri? permanent;
}

问题是如果用户使用会话(cookie)登录,然后打开一个新选项卡并转到http://www.mydomain.com此工作并转发到https,但会话丢失。我认为因为nginx不会使用重写规则转发cookie。

有没有办法转发cookie并运行重写?

感谢。

2 个答案:

答案 0 :(得分:1)

Cookie与重定向无关。发送“重定向”消息的服务器与它无关。它纯粹是Web浏览器决定是否在给定请求上发送cookie。这基于在cookie上设置的属性,例如Path,Domain,Secure和HttpOnly。我想你会发现用户cookie的属性设置方式告诉浏览器在访问新URL时不要发送它们。例如,如果您要重定向到其他域,这肯定会发生。

答案 1 :(得分:0)

解决问题的方法是将两个问题分开,维护会话和身份验证。然后,您可以保持会话ID不受保护,仅用于维护会话,并使用单独的cookie来检查登录状态。

如果网站使用与HTTPS混合的HTTP,则ID将在URL

中以明文形式传输