Nginx参数调优脚本

Nginx参数调优脚本

*

复制代码
\#!/bin/bash

\# 备份原有的nginx配置文件

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

\# 定义一些常用的性能调优参数

worker\_processes=\$(nproc)

worker\_connections=10240

keepalive\_timeout=65

sendfile="on"

tcp\_nopush="on"

tcp\_nodelay="on"

gzip="on"

gzip\_min\_length=1024

gzip\_proxied="any"

gzip\_types="text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon"

\# 使用sed命令修改nginx配置文件

sed -i "s|worker\_processes  1;|worker\_processes \${worker\_processes};|g" /usr/local/nginx/conf/nginx.conf

sed -i "s|worker\_connections  1024;|worker\_connections \${worker\_connections};|g" /usr/local/nginx/conf/nginx.conf

sed -i "s|keepalive\_timeout  65;|keepalive\_timeout \${keepalive\_timeout};|g" /usr/local/nginx/conf/nginx.conf

sed -i "s|sendfile        off;|sendfile \${sendfile};|g" /usr/local/nginx/conf/nginx.conf

sed -i "s|tcp\_nopush     off;|tcp\_nopush \${tcp\_nopush};|g" /usr/local/nginx/conf/nginx.conf

sed -i "s|tcp\_nodelay    off;|tcp\_nodelay \${tcp\_nodelay};|g" /usr/local/nginx/conf/nginx.conf

sed -i "s|gzip  off;|gzip \${gzip};|g" /usr/local/nginx/conf/nginx.conf

sed -i "s|gzip\_min\_length  1000;|gzip\_min\_length \${gzip\_min\_length};|g" /usr/local/nginx/conf/nginx.conf

sed -i "s|gzip\_proxied    off;|gzip\_proxied \${gzip\_proxied};|g" /usr/local/nginx/conf/nginx.conf

sed -i "s|gzip\_types text/html;|gzip\_types \${gzip\_types};|g" /usr/local/nginx/conf/nginx.conf

\# 检查nginx配置文件语法是否正确

/usr/local/nginx/sbin/nginx -t

\# 如果配置文件语法正确,重新加载nginx服务

if \[ \$? -eq 0 ]; then

    systemctl reload nginx

    echo "Nginx参数调优完成,配置已重新加载。"

else

    echo "配置文件语法错误,请检查。"

fi

脚本说明

备份配置文件 :脚本开始时,会将原有的 nginx 配置文件/usr/local/nginx/conf/nginx.conf备份为/usr/local/nginx/conf/nginx.conf.bak,以防修改过程中出现问题可恢复。

定义参数

worker_processes:设置 nginx 工作进程数,这里通过nproc命令获取当前服务器的 CPU 核心数作为工作进程数,一般设置为与 CPU 核心数相同可充分利用 CPU 资源。

worker_connections:每个工作进程允许的最大连接数,这里设置为 10240,可根据服务器性能和实际并发需求调整。

keepalive_timeout:设置长连接超时时间,单位为秒,这里设置为 65 秒。

sendfile:开启后可让 nginx 在传输文件时直接将文件描述符传递给内核,减少用户空间到内核空间的上下文切换,提高传输效率,设置为on

tcp_nopush:与sendfile配合使用,在数据包发送时,将多个小的数据包合并成一个大的数据包再发送,减少网络拥塞,设置为on

tcp_nodelay:在长连接中,禁用 Nagle 算法,保证数据包及时发送,设置为on

gzip:开启 gzip 压缩功能,减少数据传输量,设置为on

gzip_min_length:设置允许压缩的最小文件大小,单位为字节,这里设置为 1024 字节。

gzip_proxied:设置对代理请求也进行 gzip 压缩,any表示对所有代理请求都压缩。

gzip_types:指定需要压缩的文件类型,这里列出了常见的文本、脚本、样式表、图像等文件类型。

修改配置文件 :使用sed命令在nginx.conf文件中查找并替换相应的参数值,实现参数调优。

检查与重载 :脚本会先使用nginx -t命令检查修改后的配置文件语法是否正确,如果正确则使用systemctl reload nginx命令重新加载 nginx 服务,使配置生效;如果语法错误,则输出提示信息。

请注意,实际应用中可能需要根据服务器硬件资源、业务负载等具体情况进一步调整这些参数,并且在调整后要密切观察服务器性能和业务运行情况,确保调整达到预期效果。

相关推荐
实心儿儿14 小时前
Linux —— 文件系统_路径解析_软硬连接
linux·运维·服务器
云达闲人14 小时前
搭建DevOps企业级仿真实验环境:005Proxmox Web 界面操作入门
运维·devops·proxmox ve·web界面·虚拟机创建
sdszoe492214 小时前
华为设备安全管理之路由器+ACL
网络·安全·华为·路由器+acl
运维老郭15 小时前
Kubernetes Ingress Controller完全指南:7种选型对比+Istio集成+Gateway API迁移
运维·云原生·kubernetes
Elastic 中国社区官方博客15 小时前
Kibana 中的查询活动:用于长时间运行搜索的实时控制塔
大数据·运维·elasticsearch·搜索引擎·全文检索·kibana
Inhand陈工15 小时前
智能驾驶数据高可靠上云实战:EC3320+IR315双路冗余方案
网络·物联网·自动驾驶·智能路由器·边缘计算·腾讯云·信息与通信
黄同学real15 小时前
踩坑实录:离线内网服务器 Docker 部署 PaddleOCR-VL 1.5 完全指南
运维·服务器·docker
byoass15 小时前
企业云盘全文检索实战:Elasticsearch集成与分布式搜索
网络·分布式·安全·elasticsearch·云计算·全文检索
东北甜妹15 小时前
K8s -Daemonset,kube-proxy,service,statefulset
linux·运维·服务器
DeepHacking15 小时前
在电脑 B 上通过局域网 SSH 直接从电脑 A 拉取文件,用 rsync 断点续传
运维·ssh