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

  • Post author:
  • Post category:linux




一、并发优化


ulimit -a

##open files:1024,用户可以打开的最大文件数量

在这里插入图片描述

sysctl -a | grep file

在这里插入图片描述

free -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

在这里插入图片描述



版权声明:本文为weixin_45205924原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。