linux企业部分:nginx的并发优化负载均衡反向代理平滑升级算法扩展限流配置管理重定向。

Posted 朱的男人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux企业部分:nginx的并发优化负载均衡反向代理平滑升级算法扩展限流配置管理重定向。相关的知识,希望对你有一定的参考价值。

一、并发优化

ulimit -a ##open files:1024,用户可以打开的最大文件数量
sysctl -a | grep filefree -m

二、负载均衡

1. 默认轮询

vim /usr/local/nginx/conf
nginx -t ##检查文件中有没有语法错误
nginx -s reload ##重启服务
scp -r nginx/ xyf2:/usr/local scp -r nginx/ xyf2:/usr/local 在sever2和sever3中做以下操作: ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin ##建立nginx链接到/usr/local/sbin下便于全局使用nginx指令 vim /usr/local/nginx/conf/nginx.conf,文件的修改如下图:
echo sever > /usr/local/nginx/html/index.html
编辑解析文件:
vim /etc/hosts

在sever1中执行以下指令:
curl www.westos.org

2.改变权重

vim /usr/local/nginx/conf/nginx.conf
权重的默认值是1,改变权重后,权重值大的出现频率相对高,反之则低。
此时,权重大的sever2与sever3出现的频率比,接近于权重比

3.ip_hash

ip_hash 对后端进行健康检测,当后端出现问题后,会调度到其他后端。当所有后端出现问题时,则会出现502类型的服务器报错。
关闭掉目前有的两个后端。

4.备用机

在sever1中:
vim /usr/local/nginx/conf/nginx.conf cd /usr/local/nginx/html echo hello world > index.html

三、平滑升级

平滑升级是为了在升级服务版本时,不影响服务的正常使用。服务在不停止的情况下,换代升级。
需要在sever1主机中,设定可进行的进程数为2,安装一个版本更高的nginx,重新编译、make。
nginx -s reload cd ~ lftp 172.25.254.250 get 高于现有nginx的压缩包 exit tar zxf 高版本nginx压缩包 cd 高版本nginx解压后的目录中 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio ##编译 make
完成后,对旧版本的nginx进行备份,并拷贝新的nginx。

cd 旧版本的nginx目录中 cd /usr/local/local/sbin cp nginx nginx.old
备份完成后
cd 高版本nginx目录中 cd objs \\cp -f nginx /usr/local/nginx/sbin ##拷贝新程序

ps ax | grep nginx ##获取当前版本nginx主进程pid,及master进程。
kill -USR2 5438 ##开启新版本
kill -WINCH 7010
kill -WINCH 7011
关闭worker进程
curl -I localhost ##查看版本号。
版本回退,操作和平滑升级是一样的。

四、算法扩展

vim /usr/local/nginx/conf/nginx.con为上图中的样子。
这时由于sticky语法模块,nginx并不支持,nginx.conf文件语法检测错误。
想要让sticky模块被nginx识别,要先对nginx进行扩展。
注释掉文件中的sticky,停掉nginx的服务。
下载sticky模块包:lftp 172.25.254.250
解压完成后。
cd /nginx-1.20.1 make clean ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42 make cd objs \\cp -f nginx /usr/local/nginx/sbin/
做完这些操作后,vim /usr/local/nginx/conf/nginx.conf
解开sticky的注释。
这时,nginx服务可以成功开启了。证明sticky模块扩展成功。

五、限流

限制并发连接数

ab -c10 -n100 http://172.25.37.1/download/vim.jp
vim /usr/local/nginx/conf/nginx.conf

nginx -s reload ##更改配置文件后,重启服务

请求通过时,失败报告变多。

限制每秒请求数量

在真机测试时,做完每秒限制后,因为每秒通过一个请求,其他请求都被拒绝。nginx -s relaod ##更改完配置文件后,重启服务。

限制每次访问请求数量,排队

nginx -s relaod ##更改完配置文件后,重启服务
此时,发起请求时,会出现提示等待界面。
请求时间,也会变长。因为之前做过每秒只允许通过一个请求的限制,且一次访问只处理5个请求。除了第一个请求不需要排队外,完成所有请求大约要9秒左右。

无延迟

无延迟的设定,意思是在有访问时不考虑等待时间的问题。只处理第一时间可以处理的请求。之前设定过第一时间只处理5个请求。在这基础上,除了第一个请求以及之后的5个请求,一共6个请求。剩下的请求会失败。
nginx -s reload ####更改完配置文件后,重启服务。

限制带宽

我们平日里在网盘或者其他资源分享途径下载时,发现最开始很快。但最终下载速度会被维持在一个稳定的区间内。这个其实就是受到带宽限制的影响。
这里限制带宽每秒200k。
我们访问的文件大小为444k,共访问10次,算下来结束这次访问大约需要20秒左右。(之前做过的无延迟设定要注释掉。)

六、配置管理

自动索引

自动索引的设定,可以在访问浏览器时,更加方便,简单。很大程度上避免了使用过程中繁琐地输入步骤。
nginx -s relaod ##更改完设定后重启服务。
测试:
在浏览器搜索172.25.37.1/download

nginx exprie 缓存配置

缓存可以降低网络的带宽,提高访问的速度。
配置文件中编辑缓存时间为365天。
真机中测试:
curl -I 172.25.37.1/download/vim.jpg

显示缓存时间最终到2022年的8月26号。

日志轮询

cd /opt/ ##该目录是系统自有的
vim nginx.sh

#!/bin/bash
cd /usr/local/nginx/logs && mv access_$(date +%F -d -1day).log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

cd /usr/local/nginx/logs
ls ----> access__2021-09-04.log

日只记录管理,节省磁盘的io消耗

vim /usr/local/nginx/conf/nginx.conf
nginx -s reload ##更改完配置文件后,重启服务。
测试:
网页搜索:172.25.37.1/status

站点目录和文件限制

vim /usr/local/nginx/conf/nginx.conf(deny这一行得注释掉)
nginx -s reload ##更改完配置文件后,重启服务
测试:真机与sever(172.25.37.1)
curl localhost/status
真机:
sever1:

配置文件中设定只允许172.25.37.1这台主机可以访问,其他反访问请求全部拒绝。

中文乱码解决

nginx不支持中文字符的,在访问浏览器时,中文默认会成为乱码。

cd /usr/local/nginx/html vim index.html: hellow world 您好世界
网页搜索:172.25.37.index.html
可以给看到,“您好世界”这个中文字符串是乱码。
配置文件中编入charset utf-8,重启服务后。nginx服务就会支持中文。
此时浏览器访问:172.25.37.1/index.html:
中文乱码的问题得到解决。

七、重定向

1、防止域名恶意解析到服务器ip

拒绝访问,报错类型为500

nginx -s reload ##更改配置文件后,重启服务
测试:
浏览器访问:172.25.37.1

报错类型为500。

将所有访问重定向到指定域名

vim /usr/local/nginx/conf/nginx.conf
nginx -s reload ##更改配置文件后,重启服务

2、端口重定向

编辑配置文件,将80端口定向到443端口
cd /etc/pki/tls/certs make cert.pem mv cert.pem /usr/local/nginx/conf nginx -t nginx -s reload netstat -antlp | grep nginx
测试:
curl -I www.westos.org

3、虚拟主机重定向

!!!注意解析文件的编写!!!

www.westos.org重新定向到bbs.westos.org

vim /usr/local/nginx/conf/nginx.conf
nginx -s reload
测试:
curl -I www.westos.org
浏览器,输入www.westos.org,会跳转到bbs.westos.org

bbs.westos.org重定向www.westos.org


nginx -s reload
测试:
curl -I bbs.westos.org
浏览器,输入bbs.westos.org,会跳转到www.westos.org/bbs

以上是关于linux企业部分:nginx的并发优化负载均衡反向代理平滑升级算法扩展限流配置管理重定向。的主要内容,如果未能解决你的问题,请参考以下文章

Linux 相关优化

nginx-配置nginx实现负载均衡

nginx配置Nginx实现负载均衡

nginx配置Nginx实现负载均衡

Nginx实现负载均衡

配置Nginx实现负载均衡