nginx的优化和防盗链

隐藏版本号

#隐藏版本号
vim /usr/local/nginx/conf/nginx.conf
server_tokens off;		#在http中增加,隐藏版本号
#修改用户与组
user nginx nginx
#表示主进程master会由root创建,子进程会由nginx用户来创建。前一个是所有者,后一个是它的所在组

在这里插入图片描述

页面缓存时间

在这里插入图片描述

#设置页面的缓存时间,主要是针对动态页面,图片的缓存。
cd /usr/local/nginx/html
rz -E
vim conf/nginx.conf
location ~ \.(gif|jpg|png)$ {
	root /var/www/html/gjw;
	#设置图片缓存时间
	expires 1d;
}

在这里插入图片描述

日志分割

apache是自带日志分割,按天来收集日志
nginx没有自动分割的功能,借助脚本来收集
date -d “-1 day” “+%Y%m%d”
#分割前一天的日期

在这里插入图片描述

在这里插入图片描述

cd /usr/local/nginx/logs/
vim nginx-logs.sh
#!/bin/bash
#先指定好日志。显示前一天的时间
day=$(date -d "-1 day" "+%Y%m%d")
logs_path="/usr/local/nginx/logs/"
#指定pid文件的位置
pid_path="/usr/local/nginx/run/nginx.pid"
mv /usr/local/nginx/logs/access.log ${logs_path}access-${day}.log
mv /usr/local/nginx/logs/error.log ${logs_path}error-${day}.log
kill -USR1 $(cat ${pid_path})
#-usr1重新创建一个新的日志,日志分割
chmod 777 nginx-logs.sh
crontab -e
0 1 * * *
#日志清理
find ${logs_path} -mtime +30 -exec rm -rf {} \;

cpu绑定

在这里插入图片描述

#更改进程数已经设置cpu绑定
vim /usr/local/nginx/conf/nginx.conf
worker_processes 2;
#表示由两个进程,这里和cpu挂钩,不绑定cpu的话,进程可能会在两个cpu之间来回切换使用。浪费资源,绑定cpu,避免进程切换
worker_cpu_affinity 0001 0010 0100 1000(简写 01 10 100 1000)

连接超时

在这里插入图片描述

#连接超时
keepalive_timeout 65;
#请求完成之后的连接保存时间。65秒。60-120秒
client_header_timeout 80;
#客户端发送一个完整的请求头的超时时间,80秒内没有发送一个完整的请求头,nginx返回码408(request time out)
client_body_timeout 80;
#客户端和服务端建立连接之后,发送请求体的超时时间,客户端在80秒内没有发生任何内容,nginx返回408

页面压缩

在这里插入图片描述

#配置页面压缩
gzip on;
gzip_min_length 1k;
#最小的压缩文件,小于等于1k的文件就不压缩了
gzip_buffers 4 64k;
#设置压缩的缓冲区,4个,每个缓冲区的大小64k
gzip_comp_level 6;
#压缩比例 1-9,数字越小,压缩的比例越小,速度越快,数字越大,压缩的比率就越高,速度越慢
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
time_wait是tcp连接当中的一种状态,出现在四次挥手之后。
处于一个等待状态,双方不在发送数组。
time_wait所占用的系统资源很小,数量比较少,完全可以忽略不计
但是太多了,就有一定影响
连接断开(四次挥手)之后,尽快的把(time_wait)
#统计当前系统的连接状态
netstat -n | awk '/^tcp {++s[$nf]} END {for (a in s) print a s[a]}'
vim /etc/sysctl.conf
net.ipv4.tcp_syncookies=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的连接收回,而且尽可能的把time_wait的状态进行回收,把没用的,空闲的进行回收

nginx优化总结
隐藏版本号
页面缓存时间
日志分割
cpu绑定
连接超时
页面压缩
time_wait状态的回收

防盗链

在这里插入图片描述

vim /usr/local/nginx/conf/nginx.conf
location ~* \.(jpg|gif|png)$ {
	valid_referers none blocked *.xy102.com xy102.com;
	#允许xy102的网址访问图片。
	if ( $invalid_referer ) {
		rewrite ^/ http://www.xy102.com/error.png;
		#如果不是xy102.com访问,一律跳转到盗链提示。
	}
}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部