nginx的优化:
第一种方法:
编译文件:vim /usr/local/nginx/conf/nginx.conf
关闭版本号:server_tokens off;
保存退出后检查是否有错误:nginx -t
没有错误后重启服务:systemctl restart nginx
第二种方法:
进入core目录:cd /opt/nginx-1.22.0/src/core/
ls
在此文件中改写版本号、服务器名字:vim nginx.h
PS:如果第一种方法做完在做这种方法需要将第一种方法隐藏版本号删除
不然你再此处改写的版本号内容无法显示
进入nginx目录中,复制一下内容到命令行
cd ..
cd ..
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
重启服务: systemctl restart nginx
nginx不自带日志分割工其,通过脚本来实现。 通过定任务,自动实现。
将日志按天进行分割
要求:日期格式:access_2023-11-15.log error_2023-11-15.log
使用shell脚本编写
首先进入opt目录
编写脚本
脚本内容:
#!/bin/bash
#获取当前的日期,年-月-日
d=$(date +%Y-%m-%d)
#定义存储的目录
dir="/usr/local/nginx/logs"
#定义分割的源日志
logs_file="/usr/local/nginx/logs/access.log"
logs_error="/usr/local/nginx/logs/error.log"
#定义出nginx的pid文件
pid_file='/usr/local/nginx/run/nginx.pid'
if [ ! -d "$dir" ]
then
mkdir -p $dir
fi
#mv来对原日志文件重命名
mv ${logs_file} ${dir}/access${d}.log
mv ${logs_error} ${dir}/error${d}.log
#mv /usr/local/ngin/logs/access.log
/usr/local/nginx/logs/access_2023_11_15.log
kill -USR1 $(cat ${pid_file})
#向nginx程序传送一个信号 USR1,让nginx重新生成一个新的日志文件
find ${dir} -mtime +30 -exec rm -rf {} \;
#把30天之前修改过的文件,删除。清楚一下过期的日志文件。
赋权执行脚本
chmod 777 nginxlog.sh
./nginxlog.sh
可以看到此时我们日志分割已经完成了
在工作中一定要先备份
根据CPU的核心数来
time_wait优化:是tcp连接状态中的一种。不是报错。四次挥手之后出现的状态
在time_wait状态下,tcp处于连接等待,等待一定的时间
确保所有数据全部传送完毕
如果需要继续传输数据,可以继续使用已建立的这个连接,无须再次发起连接请求
确保所有的连接,都是可靠的关闭
time_wait在连接正常关闭之后,经历一段时间之后,会自动关闭,自动消失。占用的资源非常小,对服务器的性能影响有限
大型网站会关注这个问题
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'.
closed:连接关闭
listen:监听,等待连接
syn_recv:SYN接受,表示服务器已经收到来自客户端的SYN请求(连接请求),正在等待确认
syn_sent:SYN发送 表示应用程序已经向服务器发送了SYN请求,等待服务器确认
ESTABLISHED:已经建立连接,正在传输数据
fin_wait1
fin_wait2
向对方发送了断开请求,都在等待对方确认
close_wait:关闭等待 一端已经关闭,但是另一端还在连接
last_ack:应用程序已经发送了最后的确认,等待另一端确认之后进入closed状态
closing:正在关闭 表示双方同时尝试关闭连接
小结
1.隐藏版本号,必须要回
2.nginx的日志分割,必须要会
3.页面压缩
4.图片缓存,必须要会
5.连接保持
6.nginx的并发设置(把进程绑定到cpu),必须要会
7.time_wait
防盗链:
防止
首先需要两台设备模拟