昨天给公司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