CentOS7安装Nginx和upstream-fair

薛烨霖
2023-12-01

前言

nginx默认有负载均衡功能,用于从upstream模块定义的后端服务器列表中选取一台服务器接受用户的请求。

默认包含轮询、权重、ip_hash和least_conn1四种策略。

upstream-fair

fair采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。

由于不是默认策略,在安装时需要重新编译,因此通常认为Yum版安装的Nginx无法添加此模块。

下载

一般下载位置放在nginx安装目录下,我的是/usr/local/nginx-1.17.2/。以下用变量NGINX_SOURCE_DIR表示。
zip

# NGINX_SOURCE_DIR: Nginx源码目录
NGINX_SOURCE_DIR=/usr/local/nginx-1.17.2/ &&\
wget https://github.com/gnosek/nginx-upstream-fair/archive/master.zip -P $NGINX_SOURCE_DIR && \
unzip $NGINX_SOURCE_DIR/master.zip -d $NGINX_SOURCE_DIR &&\
mv $NGINX_SOURCE_DIR/nginx-upstream-fair-master $NGINX_SOURCE_DIR/nginx-upstream-fair

源码

# NGINX_SOURCE_DIR: Nginx源码目录
cd $NGINX_SOURCE_DIR && git clone https://github.com/gnosek/nginx-upstream-fair.git

编译

基础编译参数参考Linux安装Nginx,而添加模块,只需要增加--add-module即可,由于上一步将nginx-upstream-fair放在Nginx源码根目录下,因此可以使用相对路径:

./configure <其他参数> --add-module=nginx-upstream-fair && make && make install

使用

使用非常简单,只需要在各个server上方添加fair关键字即可。

upstream demo-upstream-fair {
	fair;
	server XXX.com;
}

问题

安装过程中碰到了编译错误,大意是ngx_http_upstream_fair_module.c的543行没有找到default_port这个变量,然后参考issues/30解决了。

参考


  1. 默认为轮询 ↩︎

 类似资料: