如何编译加载nginx sticky模块?

Nginx

1 前言

一个问题,一篇文章,一出故事。
笔者最近需要使用nginx sticky模块,于是整理此文。

2 基础知识

2.1 模块的简介

– “nginx-sticky-module-ng ”模块用于添加粘性cookie以始终转发到同一上游服务器
– “nginx-sticky-module-ng ”模块处理多个后端服务器时会与同一后端服务器保持持久会话
– “nginx-sticky-module-ng ”模块解决“ ip_hash”在多个浏览器同一IP地址时失败的场景

2.2 模块的机制

– “nginx-sticky-module-ng ”模块使用cookie跟踪上游服务器使每个浏览器独一无二
– “nginx-sticky-module-ng ”模块无法使用会切换回Round Robin Upstream或返回“Bad Gateway”
注:ound Robin Upstream或返回“Bad Gateway”由no_fallback标志决定

2.3 模块的缺陷

– “nginx-sticky-module-ng ”模块需要浏览器cookie支持,否则无法使用。

3 最佳实践

3.1 实践环境

如果你没有nginx环境,可参阅如下章节部署,

如何编译安装nginx?

3.2 编译前准备

3.2.1 准备Nginx安装包

cd ~/
wget https://nginx.org/download/nginx-1.22.1.tar.gz
tar -xf nginx-1.22.1.tar.gz

3.2.2 准备模块的编译安装包

mkdir ~/nginx-1.22.1/modules
cd ~/nginx-1.22.1/modules
wget https://github.com/Refinitiv/nginx-sticky-module-ng/archive/refs/heads/master.zip
unzip nginx-sticky-module-ng-master.zip

3.3 重新编译nginx

3.3.1 执行nginx预编译

cd ~/nginx-1.22.1/
./configure \
#...
--add-module=./modules/nginx-sticky-module-ng-master

注:“#…”表示省略Nginx的基本编译参数

3.3.2 重新编译nginx

cd ~/nginx-1.22.1/
make

3.3.3 重新安装部署nginx

cd ~/nginx-1.22.1/
make install

3.4 配置粘贴

3.4.1 增加测试配置

vim /etc/nginx/nginx.conf

加入如下配置,

upstream example {
    sticky;
    server example01.cmdschool.org:443;
    server example02.cmdschool.org:443;
}

然后,你需要使用如下命令确认配置无语法错误,

nginx -t

3.4.2 重载配置使服务生效

systemctl reload nginx.service

参阅文档
================

https://github.com/zhegeshijiehuiyouai/nginx-sticky-module-ng
https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/src/master/
https://github.com/Refinitiv/nginx-sticky-module-ng/blob/master/README.md

没有评论

发表回复

Nginx
如何使用Nginx发布维护公告?

1 前言 一个问题,一篇文章,一出故事。 最近由于需要发布维护公告,想着这种东西以后用得着,于是总结 …

Nginx
如何实现Nginx第一次访问跳转?

1 前言 一个问题,一篇文章,一出故事。 笔者在NextCloud生产环境中需要实现首次登录显示公告 …

Nginx
如何实现Nginx首次访问跳转?

1 前言 一个问题,一篇文章,一出故事。 笔者在NextCloud生产环境中需要实现首次登录显示公告 …