请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,nginx怎么实现会话(session)保持,和http强转成https

老师,nginx怎么实现会话(session)保持,和http强转成https

正在回答 回答被采纳积分+3

5回答

Jeson 2018-03-28 13:25:07

如果采用Nginx+Tomcat,想过Tomcat实现session复制的话,看看这个例子:https://www.jianshu.com/p/023d74819249

0 回复 有任何疑惑可以回复我~
提问者 qq_小犀牛_0 2018-03-27 20:27:53

Nginx+Tomcat+Memcached实现会话实现,我找下了,没有弄成功,tomcat启动了Memcachedy一个value值都没有

0 回复 有任何疑惑可以回复我~
提问者 qq_小犀牛_0 2018-03-27 20:23:53

例如:通过nginx做集群,我通过http:/ip:端口/XX ,我登陆进去了。刚好我登陆那台服务器挂了,应该要设置会话共享才不会让用户重新登陆吧

0 回复 有任何疑惑可以回复我~
提问者 qq_小犀牛_0 2018-03-27 14:49:36

nginx 会话共享,能给个列子吗

0 回复 有任何疑惑可以回复我~
  • Jeson #1
    会话需要拿实际演示环境来作,涉及开发。自定义hash key的有一个例子:https://www.imooc.com/article/19980
    回复 有任何疑惑可以回复我~ 2018-03-27 17:59:58
  • 提问者 qq_小犀牛_0 回复 Jeson #2
    老师你这代码是把请求转发到固定server服务器上
    回复 有任何疑惑可以回复我~ 2018-03-27 20:25:30
Jeson 2018-03-27 11:09:11

这是两个问题,两个问题都是好问题。

1、Nginx如何实现会话session保持

首先,Nginx 在什么时候需要进行session会话保持,当然是进行负载均衡的时候,需要将请求分发到后端不同的节点中,由于Nginx默认采用的是基于$binary_remote_addr的方式进行轮询,这样就使得在某些情况下,用户的同一个会话,请求多次后,到了后台的不同后端节点上了。

这个时候,如果在Nginx上作文章,就需要通过修改Nginx的hash方式了,也就是不实用基于ip轮询方式。当然,总的来说可以作的方式有:

(1)Nginx提取通过正则及定义变量的方式提取用户端请求中的cookie信息,然后对这个自定义变量作为hash key进行负载均衡策略。

(2)后端节点的服务,自己进行session 同步,如tomcat就可以配置session信息的同步


2、http强转为https

这个问题,我的理解是这样的,请求情况如下:

用户--->http--->nginx --->https---->后端节点

这个时候,需要对nginx作为客户端 upsteam模块配置https客户端证书,这是配置的自签方式,如下:


location /upstream {    

 ...    proxy_ssl_trusted_certificate /etc/nginx/trusted_ca_cert.crt;   

       proxy_ssl_verify       on;    

       proxy_ssl_verify_depth 2;    

...

 }



还有另外一种这个问题理解,请求情况如下:

用户请求地址为:http://www.imoocc.com将url进行rewrite为https://www.imoocc.com


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信