nginx 动态添加扩展模块----sticky
上篇博客我们已经成功的部署了nginx,在使用nginx的过程中,如果我们需要添加一个未被编译安装的模块,不需要将nginx重新配置、编译、安装,下面我们将解决在nginx中动态的添加模块。
1 Sticky模块的介绍
Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上
- 客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器
- 后端服务器处理完请求,将响应数据返回给nginx
- 此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值
- 客户端接收请求,并保存带route的cookie
- 当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器
2 nginx添加Sticky模块的步骤
(1)下载sticky模块
- 解压:
unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
(2)进入到之前编译好的nginx目录下,重新进行编译安装:cd ~/nginx-1.18.0/
配置:
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-threads --with-file-aio --with-http_stub_status_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
(3)编译:make
注意: 编译之后千万不要make install,否则将直接覆盖原有的nginx配置文件
(4)覆盖之前的nginx目录: \cp -f /root/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/
3 Sticky模块的使用
(1)编辑nginx的配置文件:vim /usr/local/nginx/conf/nginx.conf
(2) 重新加载nginx:nginx -s reload
(3) 测试:在浏览器端输入域名www.westos.org
,访问的一直是server2