Nginx负载均衡服务器实现会话粘贴的几种方式
2024-08-31 08:52:43
1、 使用Nginx 的ip_hash作为负载均衡服务并支持Session sticky
2、 使用nginx sticky第三方模块实现基于cookie的负载均衡
3、使用nginx的map指令根据cookie分流:
map $COOKIE_abcdexpid $group {
~*1$ apache001;
~*2$ apache002;
default root;
} upstream apache001 {
server 192.168.1.1:8080 weight=1 max_fails=1 fail_timeout=30s;
} upstream apache002 {
server 192.168.1.2:8080 weight=1 max_fails=1 fail_timeout=30s;
} upstream root {
server 192.168.1.0:8080 weight=1 max_fails=1 fail_timeout=30s;
} server {
listen 8080;
server_name neoremind.net; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "group=$group"'
'"$http_user_agent" $gzip_ratio $request_time "$http_x_forwarded_for"'; access_log logs/access_log main;
error_log logs/error_log; location / {
proxy_pass http://$group;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
4、 利用set和if…else… 根据cookie分流
upstream apache001 {
server 192.168.1.1:8080 weight=1 max_fails=1 fail_timeout=30s;
} upstream apache002 {
server 192.168.1.2:8080 weight=1 max_fails=1 fail_timeout=30s;
} upstream root {
server 192.168.1.0:8080 weight=1 max_fails=1 fail_timeout=30s;
} server {
listen 8080;
server_name beidoutest.baidu.com; #match cookie
set $group "root";
if ($http_cookie ~* "abcdexpid=([^;]+)(1$)"){
set $group apache001;
}
if ($http_cookie ~* "abcdexpid=([^;]+)(2$)"){
set $group apache002;
} log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "group=$group"'
'"$http_user_agent" $gzip_ratio $request_time "$http_x_forwarded_for"'; access_log logs/access_log main;
error_log logs/error_log; location / {
proxy_pass http://$group;
proxy_set_header X-Forwarded-For $remote_addr;
} }
5、nginx1.7.2版本后提供的hash方法:
# http context
upstream backend_hosts {
hash $cookie_jsessionid consistent;
server host1.example.com;
server host2.example.com;
server host3.example.com;
}
- 本文来自:Linux学习网
最新文章
- SQL Server2008从入门到全面精通 SQL数据库视频教程
- JAVA应用程序占用CPU、内存过高分析过程
- 部署Eclipse中的Web项目到Tomcat服务器运行
- mvc理念和thinkphp的语法特征 thinkphp引入模板
- 设置ViewController 数据源无法改变view
- oracle启动,提示“LRM-00109: could not open parameter file”
- ci 笔记
- 简单的web三层架构系统【第一版】
- Provably Delay Efficient Data Retrieving in Storage Clouds---INFOCOM 2015
- Linux下关闭Tomcat残留线程
- Ubuntu等Linux系统显卡性能测试软件 Unigine 3D
- IdentityServer4(9)- 使用OpenID Connect添加用户身份验证(implicit)
- Linux操作系统加固
- MATLAB:图像的与、或、非、异或逻辑运算(&;、|、~、xor)
- King Arthur's Birthday Celebration
- verilog语法实例学习(2)
- asp.net gridview 如何实现行点击事件
- 洛谷P3599 Koishi Loves Construction 构造
- Oracle11g温习-第一章 2、ORACLE 物理结构
- 软工网络15团队作业8——Beta阶段敏捷冲刺(Day6)