nginx优化

时间:2024-07-09 19:21:28

编辑nginx.conf

server_tokens off 关闭版本号

修改用户与组

在配置文件中将用户注释掉

表示主进程master会有root创建,子进程由nginx用户来创建

设置页面的缓存时间,主要是针对动态页面,图片的缓存

cd html/ 先把图片托进来

在这里插入图片描述

配置文件做一个location 设置缓存时间

在这里插入图片描述

apache是自带日志分割的 按天来进行收集日志

access.log

error -2024 -07 -03.log

nginx没有日志分割

在这里插入图片描述

date -d “-1 day” “+Y%m%dg”

脚本

在这里插入图片描述

#!/bin/bash

# 获取前一天的日期
day=$(date -d "yesterday" "+%Y%m%d")

# 指定日志路径和pid文件路径
logs_path="/usr/local/nginx/logs/"
pid_path="/usr/local/nginx/run/nginx.pid"

# 备份access.log和error.log文件
mv ${logs_path}access.log ${logs_path}access-${day}.log
mv ${logs_path}error.log ${logs_path}error-${day}.log

# 向Nginx发送USR1信号,重新打开日志文件
if [ -f ${pid_path} ]; then
    kill -USR1 $(cat ${pid_path})
else
    echo "Nginx pid file ${pid_path} not found."
    exit 1
fi

日志清理

在这里插入图片描述

#!/bin/bash

# 获取前一天的日期
day=$(date -d "yesterday" "+%Y%m%d")

# 指定日志路径和pid文件路径
logs_path="/usr/local/nginx/logs/"
pid_path="/usr/local/nginx/run/nginx.pid"

# 备份access.log和error.log文件
mv ${logs_path}access.log ${logs_path}access-${day}.log
mv ${logs_path}error.log ${logs_path}error-${day}.log

# 向Nginx发送USR1信号,重新打开日志文件
if [ -f ${pid_path} ]; then
    kill -USR1 $(cat ${pid_path})
else
    echo "Nginx pid file ${pid_path} not found."
    exit 1
fi

# 清理30天前的日志文件
find ${logs_path} -name "access-*.log" -mtime +30 -exec rm -f {} +
find ${logs_path} -name "error-*.log" -mtime +30 -exec rm -f {} +

创建定时执行

在这里插入图片描述

更改进程数已经设置cpu绑定**

不绑定cpu进程可能会在两个cpu来回切换浪费资源
在这里插入图片描述

worker_cpu_affinity 0001 0010 0100 1000
                     01  10   100  1000

请求保持时间

太长占用资源

请求头的时间也可以自定义

请求尾的时间也可以自定义

在这里插入图片描述

页面压缩

压缩比例5/6/7都可以

gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;
支持压缩的类型

在这里插入图片描述

回收TIME_WAIT:

time_wait是tcp链接的一种状态。出现在四次挥手之后

处于等待状态,双方不再发送数据。

time_wait所占用的系统资源很小,数量比较少,完全可以忽略不计

但是太多了,就会有一定的影响

连接断开(四次挥手)之后

netstat -n | awk '/^tcp/ {++s[$NF]} END {for (a in s) print a s[a]}

回收要修改内核文件

net.ipv4.tcp_synvookies=1
防止tcp的半连接队列溢出,可以达到服务端收到tcp的syn(同步)的请求时能够快速响应
net.ipv4.tcp_tw_reuse=1
允许复用time_wait状态链接,新的连接可以直接使用TIME_WAIT状态的端口,可以提高连接的复用率。
net.ipv4.tcp_tw_recycle=1
这是老版本的配置,时间戳进行连接复用
net.ipv4.tcp_fin_timeout=30
控制TIME_WAIT状态的持续时间,持续时间30秒,不是立即把TIME_WAIT的连接回收,没用的空闲的进行回收

nginx*

1、隐藏版本号

2、日志分割

3、CPU绑定

4、连接超时

5、页面压缩

6、页面缓存时间

防盗链

添加location

在这里插入图片描述

地址映射

第二台

在这里插入图片描述

网页准备:
Web源主机(192.168.233.61)配置:
cd /usr/local/nginx/html
将game.jpg、error.png文件传到/usr/local/nginx/html目录下
vim index.html

< img src=“game.jpg”/>

echo “192.168.233.61 www.kgc.com” >> /etc/hosts
echo “192.168.233.62 www.benet.com” >> /etc/hosts

盗链网站主机(192.168.233.62):
cd /usr/local/nginx/html
vim index.html

< img src=“http://www.kgc.com/game.jpg”/>

echo “192.168.233.61 www.kgc.com” >> /etc/hosts
echo “192.168.233.62 www.benet.com” >> /etc/hosts

在盗图网站主机上进行浏览器验证
http://www.benet.com