开发者社区> 问答> 正文

使用nginx 做负载, 无法登录

我配置了登录权限:

loginUsername druid loginPassword druid

但是使用nginx做负载之后就无法登录,是不是无法支持session共享导致的呢?如果是,该如何解决?

原提问者GitHub用户denghp

展开
收起
山海行 2023-07-05 22:06:35 326 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    如果使用Nginx做负载均衡后,Druid的登录功能无法正常工作,可能是因为使用了多个后端服务器,导致Druid的session无法共享。可以通过以下方法解决该问题:

    使用Sticky Session:Nginx可以通过配置Sticky Session来将来自同一客户端的请求分发到同一个后端服务器,从而保持会话一致性。需要在Nginx的配置文件中添加类似以下的配置:
    Copy
    upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    sticky session cookie srv_id expires=1h domain=.example.com path=/;
    }
    其中,sticky session cookie指定了使用cookie来实现Sticky Session,srv_id是cookie的名称,expires指定了cookie的过期时间,domain和path指定了cookie的作用域。

    使用Session共享方案:Druid提供了多种Session共享方案,如使用Redis、Zookeeper等。可以通过配置Druid的web.xml文件来启用Session共享功能。例如,在使用Redis作为Session共享方案时,可以添加以下配置:
    angelscript
    Copy


    sessionStatEnable
    true


    com.alibaba.druid.support.http.StatViewServlet


    DruidWebStatFilter
    com.alibaba.druid.support.http.WebStatFilter

    sessionStatMaxCount
    10000


    其中,指定了启用Session统计功能,指定了使用Druid的StatViewServlet作为Servlet,指定了使用Druid的WebStatFilter作为过滤器,并设置了Session统计的最大值。

    2023-07-29 23:08:01
    赞同 展开评论 打赏
  • session多机共享

    简单的可以将nginx负载策略调整为session_trick 或ip_hash。 复杂的可以配制memcache做session缓存,实现多机session共享

    原回答者GitHub用户snaigle

    2023-07-06 12:58:38
    赞同 展开评论 打赏
  • 使用 Nginx 做负载均衡时,可能出现请求会被多个 Tomcat 来回切换的情况,从而导致 Session 共享不一致,影响到登录状态的维护。

    为了解决这个问题,可以使用 Session 复制或使用 Session 共享中间件实现 Session 的共享。常用的 Session 共享中间件包括 Redis、Memcached 等。这些中间件使用高效的缓存算法,将 Session 数据存储在内存中,然后在多个 Tomcat 之间进行数据复制和同步,从而保证 Session 共享的一致性。

    具体实现方式参考如下:

    配置 Tomcat,使其支持 Session 共享。可以使用 Valve 或使用 Context Listener 实现 Session 复制或共享的功能。

    配置 Nginx,将请求发送到多个 Tomcat 节点上,并使用 Session 共享中间件将 Session 数据复制到多个 Tomcat 之间。

    配置 Session 共享中间件,例如 Redis 或 Memcached。在配置时需要设置 Session 的超时时间,以便及时清理过期的 Session 数据。

    验证 Session 共享是否正常工作。可以针对登录状态进行测试,测试多个 Tomcat 节点上的应用程序是否可以共享登录状态。需要验证多个节点上的登录状态是否同步,并且验证 Session 复制或共享是否正确实现。

    2023-07-06 08:44:01
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《Nginx 代理系统常用手册》 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载