素材牛VIP会员
如何实现多个域名 共享session
 qq***qq  分类:PHP代码  人气:1560  回帖:12  发布于6年前 收藏

场景

项目公用一套代码,现在的需求是把其中的几个大功能分别用指定的二级域名进行访问:

例如:

项目代码都在 website 这个目录下,且是单一入口文件架构方式。

现在的服务器配置是 (nginx)的配置方式是

ServerName www.project.com, a.project.com, b.project.com

Root 都指向 website 目录

现在是可以实现基本需求,几个功能模块都可以以二级域名的形式进行访问。

问题来了

怎样实现session的共享呢?

搜了下,网上的其中的一个解决方案是将session_id 放到cookie 里面, 然后在session_start 之前取出cookie中的session_id,手动设置session_id。

还有说,使用 session_get_cookie_params 方法,设置 domain 为 .project.com

这种方法尝试了下,发现时可以的,但是问题是对应的 管理后台的 management.project.com 的登录出现了问题,即使正确登录也无法登录成功!

那么

像这种的架构方式一般都是怎样实现的呢?

更新

现在采用的session存储方式是使用数据库,

 标签:nginxphp

讨论这个帖子(12)垃圾回帖将一律封号处理……

Lv3 码奴
ch***26 技术总监 6年前#1

把session理解成db,把你希望共享的数据存在db里面(或者具有db功能的容器里)
理论是:不论什么语言写的,或者framework写的session应该都可以共享

如果你所有的app都是使用相同的语言和framework,这样你session共享的代价是最小的

如果你已经分成n个app了,为什么还要共享session,共享session的结果就是耦合,那你分app的目的何在?分成N个app,然后把sso搞定就可以了

Lv4 码徒
谢***1 CEO 6年前#2

如@Kslr 所说,放到一个独立的容器里去。

上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取