nginx配置文件的优化含义和负载均衡算法以及写法(非常详细)

                          我们就以nginx1.20.1版本举例(epel源目前默认下载的版本)

目录

nginx的两种配置文件

 全局配置文件的优化

优化:

开启缓存池:

 nginx负载均衡几种参数

 nginx扩展配置文件参数与优化

优化参数详情: 

总结


nginx的两种配置文件

        第一种全局配置文件:/etc/nginx/nginx.conf  默认位置

        虚拟主机配置文件:/etc/nginx/conf.d/*.conf   扩展配置文件文件夹 后缀一定要是.conf ,注意了这个版本conf.d目录下不在有默认配置文件了。(旧版本都有)

可修改配置文件位置(/etc/nginx/nginx.conf 修改)

 全局配置文件的优化

不建议大量修改全局配置文件,有些优化可以写在扩展配置文件内(下面会说到)

我们打开nginx全局配置问价查看一下:

vim /etc/nginx/nginx.conf

 worker_processes *  worker_connections =这个服务器最大的并发请求

优化:

 我在event 事件驱动的地方加入了一个 use epoll 模型  详细请看图片 加入这个字段记得在结尾处加上';' 号

worker_connections 4096; 我改为4096个 

全局配置文件其他配置含义:

    include             /etc/nginx/mime.types;  迷你加密模块 用来做配对密钥加密签名使用的 (公钥加密私钥签名)

   default_type        application/octet-stream 支持的数据类型 (应用程序,群集模式都支持)

  log_format  main 定义日志格式

   access_log  /var/log/nginx/access.log  main; 日志存放位置和格式

   sendfile        on;  发送大文件 默认开启

开启缓存池:

    proxy_buffering on; #启用缓存池
    proxy_temp_path /usr/local/nginx/proxy_temp; #临时文件位置  这里的目录要自己创建
    proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=my-cache:100m inactive=600m  max_size=2g; 

 配置内容解析:proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=my-cache:100m inactive=600m  max_size=2g;  

 levels=1:2   1:2 表示建立的目录 一表示一级目录 二表示二级目录 

 keys_zone=my-cache:100m(定义缓存池名字大小100兆)

inactive=600m(活跃600兆)

max_size=2g(最大2GB)

            切记这个缓存目录一定要在程序账号目录下(/usr/local/nginx),其他目录可能出错

 添加位置:

   Nginx缓存是键值存储,URL是键,文件路径是值。键值存储的速度就是加快在文件系统中查找的速度。所以,存储的key是哈希过的值。

nginx缓存的好处:

1、减轻服务器负载
2、提供网页响应效率
3、降低网络阻塞,增强网络可扩展性

为什么使用缓存?
1、服务器处理能力以及负载能力出现瓶颈,响应效率大大降低
2、为了减少网络传输延迟,提升响应效率
3、能够避免因为后端服务器出现异常以及网络故障,客户端请求数据副本能够及时响应

 nginx负载均衡几种参数

算法通常写在upstream字段内

    sticky算法:是nginx的一个模块,它是基于cookie(状态信息)的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上

写法:直接在upstream字段内第一行写入 sticky; 

   weight 权重参数:加权轮巡,权重值越高就越优先访问

写法:在server ip 后面加上weight=1;  1代表权重值为1。

backup参数:备用web节点,比如当配置群集的web节点全部宕机,那么就会启用备用节点来继续保持。通常情况的访问不会直接访问备用节点。

写法:在server ip 后面加上 backup; 

 ip_hash 哈希参数:用户ip第一次访问的是那台web节点,下一次访问还是相同节点。

写法:upstream字段内第一行加入

 如果没有参数表示,轮巡,一个一个轮着来

    max_fails        允许请求失败的次数
    fail_timeout    经过max_fails失败后,服务的暂停时间
    max_conns       同一ip最大连接数、 

    down当前节点服务器不参与负载均衡

写法:

  nginx扩展配置文件参数与优化

      我们首先创建一个nginx优化文件,文件内容如下  我们在全局配置文件nginx.conf中开启了缓存池名字就叫 my-cache  写好这个文件就可以一直用

cat > /etc/nginx/nginx_params <<EOF
proxy_cache my-cache;
add_header Nginx-Cache $upstream_cache_status;
proxy_cache_valid 200 304 301 302 8h;
proxy_cache_valid 404 1m;
proxy_cache_valid any 1d;
proxy_cache_key $host$uri$is_args$args;
expires 30d;

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
EOF

优化参数详情: 

proxy_cache my-cache;  我的代理缓存  my-cache 这里使用的缓存名字
add_header Nginx-Cache $upstream_cache_status; 群集缓存状态
proxy_cache_valid 200 304 301 302 8h;  访问成功的信息 保存8h  8小时
proxy_cache_valid 404 1m; 错误信息缓存 保存1分钟
proxy_cache_valid any 1d; 其他信息缓存一天
proxy_cache_key $host$uri$is_args$args; 缓存键值
expires 30d; 默认缓存超时时间为30天


proxy_pass http://web;   #是代理转发的意思								
proxy_set_header Host $http_host;		#重新定义或者添加发往后端服务器的请求头
proxy_set_header X-Real-IP $remote_addr;#启用客户端真实地址(否则日志中显示的是代理在访问网站)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #记录代理地址
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 超时错误代码 错误信息
	
proxy_connect_timeout 30;	#代理和后端服务器连接超时时间
proxy_send_timeout 60;		#后端服务器传回代理的超时时间
proxy_read_timeout 60;		#代理等待后端服务器的响应时间
				
proxy_buffering on;		    #启用缓存,后端返回内容先缓存,再给客户端,收到多少转多少
proxy_buffer_size 32k;		#代理缓存用户头信息的缓存区大小
proxy_buffers 4 128k;		#缓存区的设置
proxy_busy_buffers_size 256k; #从proxy_buffers划出一部分缓冲区来专门向客户端传送数据的地方
proxy_max_temp_file_size 256k; #超大的响应头存储成文件。

我们在/etc/nginx/conf.d/下写入一个负载均衡的配置文件 名字就位lb.conf了

cd /etc/nginx/conf.d && vi lb.conf
upstream web {
        server 172.16.1.10 max_fails=2 fail_timeout=10s max_conns=1;
        server 172.16.1.11 max_fails=2 fail_timeout=10s max_conns=1;
}
server {
                listen 80;
                server_name www.test.com;
                index index.html index.htm;

                location /{
                        root html;
                        proxy_pass http://web;
                        include nginx_params;  #这个地方代表引用刚才我们设置的优化的参数文件
                }
}

我们用nginx自带命令检查我们的配置文件是否有问题

nginx -t

 没问题后重启nginx

 systemctl restart nginx.service 

尝试访问然后尝试:

这里一直一个ip地址没有轮巡起来 是因为缓存池 将ip缓存到了目录下  来提高访问速度 

查看日志默认的位置在: /var/log/nginx/access.log

追踪查看日志:

tail -f 50 /var/log/nginx/access.log

 

上图日志内显示的是:nginx负载均衡服务器的ip地址 

上图是日志内显示我访问的客户端ip地址以及时间用的命令是curl命令 

总结

   nginx优化,总的来说就是将工作进程和每个进程的接收客户端请求量,改大,添加epoll模型,设置超时时间,设置缓存池,针对性能较好的服务器加权轮巡,并且设置请求失败的时间和次数,还有设置ip最大连接数。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>