tengine-1.5.2配置session_sticky后不返回session cookie问题解决

昨天给公司tengine(1.5.2版本)反向代理的后端集群新增了一个tomcat节点,并在负载均衡集群中加入session_sticky指令以实现客户端会话保持,这时坑爹的问题出现了,客户端访问反向代理时竟然不返回session cookie,导致每次请求连接时sessionid都被重新刷新而无法通过登录。对此问题进行多次谷百,review tengine官方的email列表,尝试各种各样的配置,折腾了一天均未找到解决方法,只在官方提供的1.5.0版本changelog中看到了已经对此问题进行的修复:

Tengine-1.5.0 [2013-07-31]

  • Bugfix:修复session_sticky模块在某些情况下没有发出session cookie的问题 [dinic]

    http://tengine.taobao.org/changelog_cn.html#1_5_2

最后干脆直接下载了最新的2.1.0版本重新编译安装,在相同的配置下问题得以解决,特发此贴以免后来人走相同的弯路。

tengine配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
    
dso {
    load ngx_http_upstream_session_sticky_module.so;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream tomcatcluster {
        session_sticky cookie=routerc domain=test.domain.net mode=insert fallback=on option=indirect;
        server 10.1.12.53:9083 max_fails=10 fail_timeout=10s;
        server 10.1.12.56:9083 max_fails=10 fail_timeout=10s;
        check interval=500 rise=2 fall=5 timeout=3000 type=tcp;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
           session_sticky_hide_cookie upstream=tomcatcluster;
           proxy_pass http://tomcatcluster;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

加载模块如下:

[[email protected] conf]# ../sbin/nginx -m
Tengine version: Tengine/1.5.2 (nginx/1.2.9)
loaded modules:
    ngx_core_module (static)
    ngx_errlog_module (static)
    ngx_conf_module (static)
    ngx_dso_module (static)
    ngx_syslog_module (static)
    ngx_events_module (static)
    ngx_event_core_module (static)
    ngx_epoll_module (static)
    ngx_procs_module (static)
    ngx_proc_core_module (static)
    ngx_openssl_module (static)
    ngx_regex_module (static)
    ngx_http_module (static)
    ngx_http_core_module (static)
    ngx_http_log_module (static)
    ngx_http_upstream_module (static)
    ngx_http_static_module (static)
    ngx_http_gzip_static_module (static)
    ngx_http_autoindex_module (static)
    ngx_http_index_module (static)
    ngx_http_concat_module (static)
    ngx_http_auth_basic_module (static)
    ngx_http_access_module (static)
    ngx_http_geo_module (static)
    ngx_http_map_module (static)
    ngx_http_split_clients_module (static)
    ngx_http_referer_module (static)
    ngx_http_rewrite_module (static)
    ngx_http_ssl_module (static)
    ngx_http_proxy_module (static)
    ngx_http_fastcgi_module (static)
    ngx_http_uwsgi_module (static)
    ngx_http_scgi_module (static)
    ngx_http_memcached_module (static)
    ngx_http_empty_gif_module (static)
    ngx_http_browser_module (static)
    ngx_http_user_agent_module (static)
    ngx_http_upstream_ip_hash_module (static)
    ngx_http_upstream_consistent_hash_module (static)
    ngx_http_upstream_check_module (static)
    ngx_http_upstream_least_conn_module (static)
    ngx_http_upstream_keepalive_module (static)
    ngx_http_upstream_session_sticky_module (shared, 3.1)
    ngx_http_stub_status_module (static)
    ngx_http_write_filter_module (static)
    ngx_http_header_filter_module (static)
    ngx_http_chunked_filter_module (static)
    ngx_http_range_header_filter_module (static)
    ngx_http_gzip_filter_module (static)
    ngx_http_postpone_filter_module (static)
    ngx_http_ssi_filter_module (static)
    ngx_http_charset_filter_module (static)
    ngx_http_userid_filter_module (static)
    ngx_http_footer_filter_module (static)
    ngx_http_trim_filter_module (static)
    ngx_http_headers_filter_module (static)
    ngx_http_copy_filter_module (static)
    ngx_http_range_body_filter_module (static)
    ngx_http_not_modified_filter_module (static)

1.5.2版本下:

[[email protected] conf]# curl -I http://127.0.0.1
HTTP/1.1 200 OK
Server: Tengine/1.5.2
Date: Thu, 23 Jul 2015 01:32:49 GMT
Content-Type: text/html;charset=UTF-8
Content-Length: 6957
Connection: keep-alive
Set-Cookie: JSESSIONID=D633A39F35AA4A8BE1429BD12C2CDC8D; Path=/; HttpOnly
Set-Cookie: _site=1; Path=/
Content-Language: en-US

curl结果并无返回session cookie(这里配置的cookie名称为routerc)

2.1.0版本下:

[[email protected] conf]# curl -I http://127.0.0.1
HTTP/1.1 200 OK
Server: Tengine/2.1.0
Date: Thu, 23 Jul 2015 02:42:39 GMT
Content-Type: text/html;charset=UTF-8
Content-Length: 6957
Connection: keep-alive
Set-Cookie: JSESSIONID=9D04A1390FF849DC44643BFAAC1DE206; Path=/; HttpOnly
Set-Cookie: _site=1; Path=/
Content-Language: en-US
Set-Cookie: routerc=d635956645d98c4834fa077076767949;Domain=test.domain.net;Path=/

正常返回"Set-Cookie: routerc=d635956645d98c4834fa077076767949;Domain=test.bingodu.net;Path=/"

时间: 2024-11-06 00:47:32

tengine-1.5.2配置session_sticky后不返回session cookie问题解决的相关文章

tomcat8配置管理员后仍然报403

tomcat8配置管理员后仍然报403 修改conf/tomcat-users.xml <role rolename="manager"/> <role rolename="manager-gui"/><role rolename="admin"/> <user username="user" password="password" roles="admi

路由器配置Stub后 邻接关系建立失败

路由器配置Stub后 邻接关系建立失败 如图11.1所示,BENET总公司和分公司通过E1专线连接.R1.R2为总公司路由器,R3为分公司路由器.网络规划如下: n R1和R2的互联地址为:10.0.0.0/30:R2和R3的互联地址为:20.0.0.0/30: n 使用路由器的Loopback0接口地址作为Route-id,R1的Loopback0:1.1.1.1/32,R2的Loopback0:2.2.2.2/32,R3的Loopback0:3.3.3.3/32. 图11.1 配置Sutb后

关于Lync与思科电座机配置共振后,收到Miss Call问题

前段时间一直在做公司的Lync Server 2010与Cisco Call Manager集成以便实现Cisco Phone与Lync Phone共振响铃,但是实际使用中却带来了一些无法避免的问题,即当Phone和Lync client同时响铃时,如果用户接起Phone,那么会在outlook中收到一封提示Lync 错过电话的missed call 通知邮件:如果先接起的是Lync client,不会收到通知邮件.此问题对于用户来说多多少少存在一些体验上的不完美,但事实上,如果通过Cisco

CentOS LAMP环境配置好后,拒绝访问远程服务器

当LAMP环境配置好后,我们在本机:192.168.0.130使用Navicat连接服务器:192.168.0.168的时候会出现远程MySQL不允许访问的错误,这是因为Mysql为了安全性,在默认情况下用户只允许在本地登录,我们现在的情况是在本机使用phpmyadmin或则是Navicat进行登录.数据库管理,那么怎么办呢?我们需要进行如下操作: 一.如果是允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如下:在本机先使用root用户登录mysql:mysql -u

Eclipse配置tomcat后,启动tomcat,访问tomcat报404错误

当你在Eclipse中新建一个工程,配置好tomcat,然后测试tomcat是否配置成功的时候,报404错误异常. 解决方法: 1,把工程文件删除,重新建立一个新的工程, 2,新建一个工程. 3,New 一个 Server ,配置tomcat. 4,双击 弹出配置页面 在Server Locations配置中选择第二个选项,use tomcat installation ,保存,重新启动Tomcat服务,访问成功 注意: 上面不能进行选择,是置灰的,原因是我在这个服务器上启动过这个项目,只有刚新

配置ADCS后访问certsrv的问题

成功配置ADCS后,从服务器端浏览器访问与客户端访问certsrv页面显示的内容不完全一致,有时间同样一个连接,所显示的路径是不一样,大概网页中有一个判断,是同一个域内访问的,还是从外部访问的,因此展示的页面也就不同了. 见下面屏幕截图. 下面两个页面在客户端需要手工输入才能打开,但是提交还是有问题. http://IP/certsrv/certqad.asp http://ip/certsrv/certqma.asp 在服务器端点击相关的链接会进入,但是在客户端显示的不是这个地址. 对于根证书

在Linux上配置xampp后远程访问域名报错

在Linux上配置xampp后远程访问域名报错: New XAMPP security concept: Access to the requested object is only available from the local network. This setting can be configured in the file "httpd-xampp.conf". 初步分析了一下错误原因是:安全异常,需要修改httpd-xampp.conf.这个文件在:/opt/lampp/

selinux配置disable后系统无法启动

故障现象:selinux 配置 disabled 后开机卡在滚动条无法进系统解决思路:单用户模式下修改修改selinux 配置 单用户进入方式 1)开机按 键盘 e 进入系统 2)找到 linux16 开始,LANG=zh_CN.UTF-8结尾一行,尾部加 ( 空格 加上 selinux=0) 3)然后 ctrl + x 启动,就看到熟悉的登录界面. 修改正确selinux vim /etc/selinux/config vim /etc/selinux/config This file con

Outlook客户端配置exchange后无法打开

Exchange Server的Outlook客户端发生不能登录的问题,并且试过重新配置电子邮件账户.重装Outlook等解决方法都不能解决问题. 问题描述=========== Outlook客户端配置exchange后无法打开 问题原因=========== Outlook客户端选择兼容模式导致此问题 解决方法=========== Outlook客户端右键属性取消兼容模式运行后OK 原文地址:http://blog.51cto.com/10981246/2170746