在我们安装好nginx之后,不要继续执行nginx,否则会报错
怎样查看nginx是否已经开启?
1 ps aux
查看进程
2 netstat -antlp |grep 80
查看80端口
执行1我们可以发现nginx执行用户为nobody
我们会发现解压nginx压缩包之后,会生成一个nginx开头的目录其中包含conf目录,这里的conf目录时源码目录,而在 /usr/local/nginx/conf的该目录才是我们真正需要修改的地方
我们修改配置文件
位于/usr/local/nginx/conf/nginx.conf
首先将nobody改为nginx用户保存退出,然后创建nginx用户(仅用于程序使用)
useradd -M -d /usr/local/nginx -s /sbin/nologin nginx
-M
不要创建用户主目录
-d
指定用户主目录的位置
-s
指定用shell
nginx -s reload
worker——processes 根据cpu数量来进行确定
lscpu
我们发现虚拟机核心数量为1
所以worker——processes为1
如果我们在cpu核心数量多个的情况下开多个worker,此时工作方式是共享,会加大cpu消耗
优化:
1改为auto
worker——processes auto
表示自动确定cpu数量,根据系统的cpu核心数来启动相应的worker数量,一个进程对应一个cpu核心
优化:
worker_processes 2; //最多开启8个
worker_cpu_affinity 01 10; //cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭
执行 ps ax
一个worker
执行 px aux
由nobody已改为nginx
继续修改
events {
use epoll;
worker_connections 65535; 每个worker的并发数可以达到65535(作为web服务器),作为负载均衡器需要除以cpu核心数量(反向代理)
}
针对事件,IO复用(5种方式), ————>IO复用是nginx并发数量高的原因
执行 ulimit -a我们发现打开文件数量只有1024
我们进行更改
vim /etc/security/limits.conf
设定用户最大文件描述符的使用大小
引入负载均衡器
在引入之前再开三台虚拟机,hostname分别为server2 3 4 ,下载Apache
echo server2 > /var/www/html/index.html
echo server3 > /var/www/html/index.html
2 3分别写入并重启httpd
在4做hosts解析 /etc/hosts
官网负载均衡器地址:
HTTP Load Balancing | NGINX Plus
改动如下:
对于upstream均衡器:
upstream westos{
westos为均衡器名字
server 172.25.0.12:8000 weight=2;
后端的应用服务器可以监听不同的端口,例如12为8000,13为80
weight=2为权重,172.25.0.12获取的请求数为172.25.0.13的两倍
server 172.25.0.13:80;
server 127.0.0.1 backup;
备机,在前面的server全部挂掉的时候会启用该server,127.0.0.1为本机地址
}
对于server2监听端口的修改:
vim /etc/httpd/conf/httpd.conf
修改完毕之后在server1(nginx)重启
我们使用server4访问nginx时,显示如下:
此时当server2挂掉之后我们使用server4访问nginx时,显示如下:
我们修改server1(nginx)作为备机的默认发布目录:
echo server1 > /usr/local/nginx/html/index.html
记得重启
当server2和server3全部挂掉时,我们使用server4访问server1
此外我们需要了解状态码:
再看ip_hash
意义:同一个IP发过来的数据包会全部发往同一个后端做处理
我们在使用ip_hash时需要禁掉备机:
我们在server2没有down掉的情况下,使用server4访问server1
在server2down掉的情况下,使用server4访问server1
此时我们发现ip_hash无法满足负载均衡
此时我们使用Cookie:
由于我们下载的不是plus版本,所以在扩容调度算法时,先停掉nginx
nginx -s stop
我们选择添加模块来进行升级
链接:https://pan.baidu.com/s/14jfYL_zG-ShHU7ToopBAFg?pwd=2313
提取码:2313
提前压缩包nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
下载unzip
unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
解压
tar zxf nginx-1.21.1.tar.gz
再次解压源码压缩包
./configure --with-http_stub_status_module --with-http_ssl_module --prefix=/usr/local/nginx --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
添加sticky模块
make
cd objs/
cp nginx /usr/local/nginx/sbin/nginx
覆盖
cd /usr/local/nginx/conf/
vim nginx.conf
编辑文件
加入该模块
nginx -t 检查语法如图所示:
启动nginx
使用浏览器测试(建议使用Linux浏览器测试,Windows浏览器会强制将http转为https)
测试结果如下:
且保持不变