-
nginx优化;优化项目6项
-
网页压缩
-
可以在http区域中取消压缩选项的注释;可添加其他的控制选项
-
-
gzip on:开启 gzip 压缩输出;
-
gzip_buffers 4 16k:表示申请 4 个单位为 16k 的内存作为压缩结果流缓存,默认值 是申请与原始数据大小相同的内存空间来存储 gzip 压缩结果;
-
gzip_http_version 1.0:用于设置识别 http 协议版本,默认是 1.1,目前大部分浏览 器已经支持 gzip 解压,但处理较慢,也比较消耗服务器 CPU 资源;
-
gzip_comp_level 2:用来指定 gzip 压缩比,1 压缩比最小,处理速度最快;9 压缩 比最大,传输速度快,但处理速度最慢,使用默认即可;
-
gzip_min_length1k:用于设置允许压缩的页面最小字节数;
-
gzip_vary on:选项可以让前端的缓存服务器缓存经过 gzip 压缩的页面。
-
gzip_types text/plain:压缩类型,是对哪些网页文档启用压缩功能;
-
text/文本,语言 image/图片
-
-
-
-
超时断连
-
避免客户端长期占用连接造成资源浪费
-
在相应站点内添加:keepalive_timeout 65 180;
-
前一个数字表示服务端的超时断连时间
-
后一个数字表示客户端的超时断连时间,能让一些浏览器主动断开连接,减少服务端的资源浪费
-
-
-
日志轮转
-
#!/bin/bash # Filename: fenge.sh d=$(date -d "-1 day" "+%Y%m%d") logs_path="/var/log/nginx" pid_path="/usr/local/nginx/logs/nginx.pid" [ -d $logs_path ] || mkdir -p $logs_path mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d kill -USR1 $(cat $pid_path) find $logs_path -mtime +30 |xargs rm -rf
-
变量d:提取数字日期
-
logs_path:日志文件的存放路径
-
pid_path:nginxpid文件位置
-
移动重命名
-
删除超过30天的日志文件
-
xargs:可以读取标准输入和管道中的数据,用于弥补有些命令(如echo、kill、rm)不能从管道中读取数据的不足。
-
kill -usr1 所有连接都断开之后才会重新载入配置文件
-
-
最后测试,并将该脚本添加到计划任务中
-
-
网页缓存
-
针对对象每个站点,所以相关配置要写在要设置缓存的站点下,也就是server下
-
location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { root html; expires 1d; }
-
~ 正则表达式,区分大小写
-
定义了要缓存的对象 定义了缓存对象所在的目录 定义了缓存对象保留的时间
-
时间: s秒 m分钟 h小时 d天 w周 M月
-
-
-
-
-
进程优化
-
-
标识1:标识nginx要以那个用户去运行
-
主进程(master)是以启动该服务的用户身份去运行 工作进程(worker)是以nginx程序用户去运行
-
-
标识2:工作进程数,每一个进程独占一个内核,需要根据实际情况需求进行适应性调节.
-
每一个工作进程占一个核心
-
-
标识3:cpu亲和度,以二进制进行编号,二进制位数与核心有关。
-
通过手动指定特定的cpu会提高性能匹配性
-
-
标识4:事件驱动模块,每一个进程能处理多少连接数,与内存容量有关。
-
-
用ps -elf | grep nginx 可以查看nginx运行进程
-
用ps aux | grep nginx 可以查看nginx运行进程
-
可以将worker_processes 值设置为auto
-
当你的服务器为动态扩展的云环境,auto会自动识别可用的cpu核心数,动态的切换
-
-
-
隐藏版本号
-
token(令牌)
-
在主配置文件中添加: server_tokens off;
-
表示关闭令牌显示:只会显示nginx
-
-
-
修改源配置文件并进行重新编译
-
源码包中src/core/nginx.h
-
core(核心)
-
第一行:定义了版本号 第二行:定义了版本名称
-
修改完毕后重新编译,进行重启后测试。(重载不生效或跟缓存有关)
-
编译时需要注意,一般程序用户要在编译提前创建好。
-
-
-
-
-
-
查看源码包中相关的文件可以看出默认安装哪些功能
-
例:nginx
-
cat options | grep YES 默认开启的功能
-
-
-
nginx防盗链
-
准备环境: 三台主机都有被盗链,与盗链主机的IP 都关闭防火墙, 被盗链主机准备nginx的服务器,盗链者随意,编写各自主页文件信息。并准备相关资源。
-
书写防盗链规则
-
ocation ~* \.(gif|jpg|jpeg)$ { valid_referers *.benet.com benet.com; if ($invalid_referer) { rewrite ^/ http://www.benet.com/error.png; }
-
valid_referers:nginx会通就过查看referer自动和valid_referers后面的内容进行匹配,如果匹配到了就将$invalid_referer变量置0,如果没有匹配到,则将$invalid_referer变量置为1,匹配的过程中不区分大小写
-
-
-
-
FPM参数优化
-
FPM两种启动方式
-
Static 的方式可以使用 pm.max_children 指定启动的进程数量
-
Dynamic 方式的参数要根据服务器的内存与服务负载进行调整
-
-
带入例子理解
-
pm=dynamic
-
pm.max_children=20
-
pm.start_servers=5
-
pm.min_spare_servers=2
-
pm.max_spare_servers=8
-
FPM 启动时有 5 个进程,最小空闲 2 个进程,最大空闲 8 个进程,最多可以有 20 个进程存在
-
-
-
-
以上就是对nginx服务器的基本优化,优化的项目大部分需要根据实际配置 。