记录一下nginx添加fair负载均衡的功能
上一章中已经采用编译的方式安装了nginx,并添加了ssl模块
1.下载地址:nginx-upstream-fair
解压:
unzip nginx-upstream-fair-master.zip
本人是上传到/home/emeet/目录下
2.切换到nginx-1.13.2目录下执行
sudo ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/logs/nginx.pid --add-module=/home/emeet/nginx-upstream-fair-master --with-http_ssl_module
目录一定和本地文件对应好,此处还有一坑是之前添加的ssl模块,添加fair的时候要重新加入,不然会被覆盖掉,本人测试是这样,如果之前有加入其它模块也要同时加入。
此步骤可能出现异常:
nginx-upstream-fair/ngx_http_upstream_fair_module.c:543:28: error: ‘ngx_http_upstream_srv_conf_t’ has no member named ‘default_port’
if (us->port == 0 && us->default_port == 0) {
解决办法是:
参考:http://www.mamicode.com/info-detail-89267.html
到nginx的src/http/ngx_http_upstream.h文件找到ngx_http_upstream_srv_conf_s结构添加in_port_t default_port;
重新执行一遍上一步骤,没有错误之后,执行
sudo make
不要执行make install,会覆盖安装。
最后复制Nginx文件:
复制之前先备份旧的nginx程序
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
然后复制
sudo cp objs/nginx /usr/local/nginx/sbin/nginx
如果提示“cp:cannot create regular file
/usr/local/nginx/sbin/nginx’: Text file busy”`
建议使用如下语句cp
sudo cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
如图,在nginx.conf中添加fair负载
upstream webserver{
fair;
server xx.xxx.xx.xx:443 max_fails=2 fail_timeout=2s;
server xxx.xxx.xx.xxx:443 max_fails=2 fail_timeout=2s;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190731195652421.png
使用 sudo /usr/local/nginx/sbin/nginx -t
检查是否正确。
reload 即可。