网站使用程序discuz3访问都正常,只有用户登录存在异常,具体就是:
用户登陆后会马上显示未登录,然后刷新一下又变成了登录中这个问题的原因显然是由于session导致,后台有多个web机器,当用户登录后,会把登录态session保存到当前web,但是再次发送请求时则会到另一台机器上,所以原来的session信息就找不到了。
解决这个问题的思路如下:1.可以把session时时同步到另外的机器2.可以Angelina前端的调度器保持长连接,也就是说某个用户的请求在某一时间段内始终抓发到固定的一台机器上面这两种方式,第二种更容易实现使用nginx代理,其中nginx有一种算法支持长连接,具体配置如下:
upstream test{
ip_bash; server 192.168.109.5; server 192.168.109.3;}关键代码:ip_bash
这样,nginx就会把用户的请求一直转发到后台的某台机器上了