粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers
Module ngx_http_upstream_module http://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky
Syntax: | sticky sticky sticky |
---|---|
Default: | — |
Context: | upstream |
This directive appeared in version 1.5.7.
Enables session affinity, which causes requests from the same client to be passed to the same server in a group of servers. Three methods are available:
cookie
-
When the
cookie
method is used, information about the designated server is passed in an HTTP cookie generated by nginx:upstream backend {
server backend1.example.com;
server backend2.example.com; sticky cookie srv_id expires=1h domain=.example.com path=/;
}A request that comes from a client not yet bound to a particular server is passed to the server selected by the configured balancing method. Further requests with this cookie will be passed to the designated server. If the designated server cannot process a request, the new server is selected as if the client has not been bound yet.
The first parameter sets the name of the cookie to be set or inspected. The cookie value is a hexadecimal representation of the MD5 hash of the IP address and port, or of the UNIX-domain socket path. However, if the “
route
” parameter of the server directive is specified, the cookie value will be the value of the “route
” parameter:upstream backend {
server backend1.example.com route=a;
server backend2.example.com route=b; sticky cookie srv_id expires=1h domain=.example.com path=/;
}In this case, the value of the “
srv_id
” cookie will be eithera
orb
.Additional parameters may be as follows:
expires=
time
- Sets the
time
for which a browser should keep the cookie. The special valuemax
will cause the cookie to expire on “31 Dec 2037 23:55:55 GMT
”. If the parameter is not specified, it will cause the cookie to expire at the end of a browser session. domain=
domain
- Defines the
domain
for which the cookie is set. Parameter value can contain variables (1.11.5). httponly
- Adds the
HttpOnly
attribute to the cookie (1.7.11). secure
- Adds the
Secure
attribute to the cookie (1.7.11). path=
path
- Defines the
path
for which the cookie is set.
If any parameters are omitted, the corresponding cookie fields are not set.
route
-
When the
route
method is used, proxied server assigns client a route on receipt of the first request. All subsequent requests from this client will carry routing information in a cookie or URI. This information is compared with the “route
” parameter of the server directive to identify the server to which the request should be proxied. If the “route
” parameter is not specified, the route name will be a hexadecimal representation of the MD5 hash of the IP address and port, or of the UNIX-domain socket path. If the designated server cannot process a request, the new server is selected by the configured balancing method as if there is no routing information in the request.The parameters of the
route
method specify variables that may contain routing information. The first non-empty variable is used to find the matching server.Example:
map $cookie_jsessionid $route_cookie {
~.+\.(?P<route>\w+)$ $route;
} map $request_uri $route_uri {
~jsessionid=.+\.(?P<route>\w+)$ $route;
} upstream backend {
server backend1.example.com route=a;
server backend2.example.com route=b; sticky route $route_cookie $route_uri;
}Here, the route is taken from the “
JSESSIONID
” cookie if present in a request. Otherwise, the route from the URI is used. learn
-
When the
learn
method (1.7.1) is used, nginx analyzes upstream server responses and learns server-initiated sessions usually passed in an HTTP cookie.upstream backend {
server backend1.example.com:8080;
server backend2.example.com:8081; sticky learn
create=$upstream_cookie_examplecookie
lookup=$cookie_examplecookie
zone=client_sessions:1m;
}In the example, the upstream server creates a session by setting the cookie “
EXAMPLECOOKIE
” in the response. Further requests with this cookie will be passed to the same server. If the server cannot process the request, the new server is selected as if the client has not been bound yet.The parameters
create
andlookup
specify variables that indicate how new sessions are created and existing sessions are searched, respectively. Both parameters may be specified more than once, in which case the first non-empty variable is used.Sessions are stored in a shared memory zone, whose
name
andsize
are configured by thezone
parameter. One megabyte zone can store about 4000 sessions on the 64-bit platform. The sessions that are not accessed during the time specified by thetimeout
parameter get removed from the zone. By default,timeout
is set to 10 minutes.The
header
parameter (1.13.1) allows creating a session right after receiving response headers from the upstream server.The
sync
parameter (1.13.8) enables synchronization of the shared memory zone.
This directive is available as part of our commercial subscription.
Syntax: | sticky_cookie_insert |
---|---|
Default: | — |
Context: | upstream |
This directive is obsolete since version 1.5.7. An equivalent sticky directive with a new syntax should be used instead:
sticky cookie
name
[expires=
time
] [domain=
domain
] [path=
path
];
存储位置:Sessions are stored in a shared memory zone;
cookie/session值:目的是导向哪个服务器,故值为服务器节点标识;
粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers的更多相关文章
- Cloud Foundry Session Affinity(Sticky Session)的实现
会话保持(Session Affinity),有时又称粘滞会话(Sticky Sessions), 是负载均衡领域设计需要着力解决的重要问题之一,也是一个相对比较复杂的问题. 会话保持是指在负载均衡器 ...
- Enabling Session Persistence 粘性会话
NGINX Docs | HTTP Load Balancing https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-ba ...
- ip_hash(不推荐使用) 会话粘性问题分析 Cookie 的 Session Sticky
Nignx 连接tomcat时会话粘性问题分析_changyanmanman的专栏-CSDN博客_后端tomcat导致 前端elb中断 https://blog.csdn.net/cymm_liu/a ...
- sticky session 粘性会话
New Elastic Load Balancing Feature: Sticky Sessions | AWS News Blog https://amazonaws-china.com/cn/b ...
- Nginx+Memcached+Tomcat集群配置实践(Sticky Session)
准备工作 创建一个简单的web应用,名为session.其中有两个页面,分别如下所示: 页面login.jsp <%@ page language="java" conten ...
- kubernetes sticky session 配置
kubernetes中经常需要配置sticky session,此时需要根据你使用的ingress controller来设置了. 1.Nginx Ingress apiVersion: extens ...
- 会话数据的管理——Session
cookie的局限性: cookie只能存字符串类型.不能保存对象 只能存非中文 1个cookie的容量不超过4KB(如果要保存非字符串,超过4kb内容,只能使用session技术!!!) Sessi ...
- 会话技术cookie和session详解
什么是会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话技术解决了什么问题 每个用户与服务器进行交互的过程中,各自会有一 ...
- 会话管理---Cookie与Session
会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 保存会话数据的两种技术:Cookie,Session Cookie是客户端技术, ...
随机推荐
- mysql 主主复制(双主复制)binlog-do-db
[root@DB ~]# grep "binlog-do-db" /etc/my.cnf binlog-do-db = test [root@DB-S ~]# grep " ...
- echarts 百度图表
手册说明 http://echarts.baidu.com/option.html 3.0版本加了很多新属性可以看以上链接 此文用的3.x版本 第一步 引入 <script src=" ...
- 基于CSS3 3D百叶窗图像过渡特效
你可能已经在网上看到过不少使用jQuery制作的百叶窗效果,我们可不可以使用纯CSS来完成这项工作呢?答案是肯定的.我们不仅可以制作出这种百叶窗效果,还可以使它具有响应性. 在线预览 源码下载 要 ...
- 缓存技术PK:选择Memcached还是Redis(转)
[IT168 技术]要Memcached还是要Redis?在构建一款现代且由数据库驱动的Web应用程序并希望使其拥有更为出色的性能表现时,这个问题总会时不时出现.并给每一位开发人员带来困扰.在考虑对应 ...
- Web app root system property already set to different value 错误原因及解决
http://yzxqml.iteye.com/blog/1761540 ——————————————————————————————————————————————————————————————— ...
- PHP 安全三板斧:过滤、验证和转义之转义篇 & Blade模板引擎避免XSS攻击原理探究
PHP 转义 实现 把输出渲染成网页或API响应时,一定要转义输出,这也是一种防护措施,能避免渲染恶意代码,造成XSS攻击,还能防止应用的用户无意中执行恶意代码. 我们可以使用前面提到的 htmlen ...
- HeadFirst Jsp 09 (JSTL)
JSTL (jsp standard tag library) 标准标记库 JSTL 安装, 注意你的每一个项目都需要一个 JSTL副本, 并把它放在WEB-INF/lib 目录下, 在 Tomcat ...
- mysql实现经纬度计算两个坐标之间的距离sql语句
select *,(2 * 6378.137* ASIN(SQRT(POW(SIN(PI()*(111.86141967773438-latitude)/360),2)+COS(PI()*33.070 ...
- JavaBeans wiki 摘译
20161013最新提示:既然来到这了,为什么不看看 JavaBeans 官方文档学习 ? 鉴于Spring的beans包遵守JavaBean specs,有必要认真研究下JavaBean specs ...
- 浅谈AutoResetEvent的用法
using System;using System.Threading; namespace AutoResetEvent_Examples{ class MyMainClass { ...