Session 使用cookie转发的Nginx强制SSL(https)

Session 使用cookie转发的Nginx强制SSL(https),session,cookies,ssl,nginx,rewrite,Session,Cookies,Ssl,Nginx,Rewrite,我正在对nginx中的vhost强制执行SSL,包括: if ($ssl_protocol = "") { rewrite ^ https://www.mydomain.com$request_uri? permanent; } 问题是,如果用户使用会话(cookie)登录,然后打开一个新选项卡并转到http://www.mydomain.com此操作可以工作并转发到https,但会话丢失。我认为是因为cookie没有通过nginx的重写规则转发 是否有办法转发cookies并运行重写

我正在对
nginx
中的vhost强制执行
SSL
,包括:

if ($ssl_protocol = "") {
    rewrite ^ https://www.mydomain.com$request_uri? permanent;
}
问题是,如果用户使用会话(cookie)登录,然后打开一个新选项卡并转到
http://www.mydomain.com
此操作可以工作并转发到
https
,但会话丢失。我认为是因为cookie没有通过nginx的重写规则转发

是否有办法转发cookies并运行重写


谢谢。

Cookies与重定向无关。发送“重定向”消息的服务器与此无关。纯粹是web浏览器决定是否根据给定请求发送cookie。这是基于cookie上已设置的属性,例如路径、域、安全和HttpOnly。我想您会发现,用户cookie上的属性设置方式告诉浏览器在访问新URL时不要发送它们。这肯定会发生,例如,如果您正在重定向到另一个域。

Cookies与重定向无关。发送“重定向”消息的服务器与此无关。纯粹是web浏览器决定是否根据给定请求发送cookie。这是基于cookie上已设置的属性,例如路径、域、安全和HttpOnly。我想您会发现,用户cookie上的属性设置方式告诉浏览器在访问新URL时不要发送它们。例如,如果您重定向到另一个域,这种情况肯定会发生。

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


如果站点使用HTTP与HTTPS混合,则id将以明文形式在URL中传输。解决问题的方法是将这两个问题分开,维护会话和身份验证。然后,您可以不保护会话id,仅用于维护会话,并使用单独的cookie检查登录状态

如果站点使用HTTP与HTTPS混合,则id将以明文形式在URL中传输