nginx的优化

nginx的优化:

隐藏nginx的版本号

第一种方法:

编译文件:vim /usr/local/nginx/conf/nginx.conf

关闭版本号:server_tokens off;

保存退出后检查是否有错误:nginx -t

没有错误后重启服务:systemctl restart nginx

nginx的优化_第1张图片

nginx的优化_第2张图片

第二种方法:

进入core目录:cd /opt/nginx-1.22.0/src/core/

ls

nginx的优化_第3张图片

在此文件中改写版本号、服务器名字:vim nginx.h

nginx的优化_第4张图片

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的优化_第5张图片

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天之前修改过的文件,删除。清楚一下过期的日志文件。

nginx的优化_第6张图片

赋权执行脚本

chmod 777 nginxlog.sh

./nginxlog.sh

可以看到此时我们日志分割已经完成了

Nginx的网页压缩:

在工作中一定要先备份

nginx的优化_第7张图片

nginx的优化_第8张图片

对图片进行缓存

nginx的优化_第9张图片

连接超时:tcp连接控制时间

nginx的优化_第10张图片

nginx的并发设置

根据CPU的核心数来

nginx的优化_第11张图片

面试题如何把内核绑定在cpu上

nginx的优化_第12张图片

time_wait优化:是tcp连接状态中的一种。不是报错。四次挥手之后出现的状态

在time_wait状态下,tcp处于连接等待,等待一定的时间

确保所有数据全部传送完毕

如果需要继续传输数据,可以继续使用已建立的这个连接,无须再次发起连接请求

确保所有的连接,都是可靠的关闭

time_wait在连接正常关闭之后,经历一段时间之后,会自动关闭,自动消失。占用的资源非常小,对服务器的性能影响有限

大型网站会关注这个问题

如何查看本机tcp所有的连接状态

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:正在关闭 表示双方同时尝试关闭连接

nginx的优化_第13张图片

小结

1.隐藏版本号,必须要回

2.nginx的日志分割,必须要会

3.页面压缩

4.图片缓存,必须要会

5.连接保持

6.nginx的并发设置(把进程绑定到cpu),必须要会

7.time_wait

防盗链:

防止

首先需要两台设备模拟

你可能感兴趣的:(nginx,运维)