Nginx——优化与防盗链
一.配置Ngin隐藏版本号
1.隐藏版本号,避免安全漏洞
2.Nginx隐藏版本号方法
修改配置法
修改源码法
二.修改配置文件法
1.将Nginx配置文件中server-tokens选项改为off
[]vim /usr/local/nginx/conf/nginx.conf
[]nginx -t; //检查语法
2.重启服务,访问网络使用curl -I http://localhost命令检测
[]systemctl restart nginx
3.方法二
vim /usr/local/nginx/conf/nginx.conf
http{
server_tokens on; //修改此选项为on
}
vim /opt/nginx-1.12.2/src/core/nginx.h
cd /opt/nginx-1.12.2
make && make install
使用curl -I http://localhost命令检测
三.修改Nginx用户和组
1.Nginx运行时进程需要有用户和组的支持,以实现对网站文件的读取进行访问控制。
2.Nginx默认使用Nobody用户账号与组账号。
3.修改方法
编译安装时指定用户和组
修改配置文件指定用户和组
4.编译安装时指定
./configure --user=nginx --group=nginx
5.修改配置文件法指定
1.创建新的用户账号,如nginx
2.修改主配置文件user选项,指定用户账号和组账号
3.重启nginx服务,使配置生效
4.使用ps aux命令查看nginx的进程信息,验证运行用户账号改变效果。
命令过程:
vim /usr/local/nginx/conf/nginx.conf
ps aux | grep nginx ##查看效果
四.配置Nginx网页缓存时间
1.配置意义
当Nginx将网页数据返回给客户端后,可设置缓存时间,以方便在日后进行相同内容的请求时,避免重复请求,加快访问速度。
2.一般针对的时静态网页设置,对动态网页不设置缓存时间。
3.配置过程
[]vim /usr/local/nginx/conf/nginx.conf
location ~\.(gif|jpg|jepg|png|bmp|ico)${
root html;
expires 1d; //缓存时间一天
}
cd /user/loca/nginx/html
vi index.html
<img src="a.png.png" /> //在body里面加入
systemctl restart nginx
4.测试
在浏览器里面输入IP地址,使用抓包工具进行抓。
5.设置方法
修改配置文件,在http段,或者server段,或者location段加如特点内容的过期参数。
五. 实现Nginx的日志分割
1.随着Nginx运行时间的增加,日志也会增加,为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件。
2.太大的日志文件对检测是一个大灾难。
解决方式:定期进行日志分割
3.Nginx自身不具备日志切割处理的能力,但可以通过Nginx信号控制功能的脚本实现日志的自动切割。
4.通过Linux的计划任务周期性进行日志切割
5.编写脚本进行日志切割的思路
1.设置时间变量
2.设置保存日志的路径
3.将目前的日志文件进行重命名
4.重建新日志文件
5.删除时间过长的文件
6.设置cron任务,定期执行脚本,自动进行日志分割。
1.配置过程
[]vim /opt/fenge.sh
#!/bin/bash
#日志分割
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}/aa.com.access.log-$d
kill -HUP $(cat $pid_path) //重新加载服务
find $logs_path -mtime +30 | xargs rm -rf //强力删除,-mtime:当修改文件的内容数据时,就会更新这个时间。
// 补充:-exec:删除后面的内容,加上i,是立即执行的意思
// 例:-exec rm -i {}\
which sh
crotab -e
0 1 * * * /usr/bin/sh /root/fenge.sh
//分钟 时 日 月 星期
六.配置Nginx实现连接超时
为避免同一客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问的时间。
1.超时参数
1.keep_header_timeout 65 100:前面参数服务器主动关闭的超时时间,后面参数是客户机浏览主动关闭的时间。
2.client_header_timeout 80:等待客户端发送请求头的超时时间,超过发送408错误。
3.client_body_timeout 80:设置客户端发送请求体超时时间。
2.配置命令
vi /etc/nginx.conf
keepalive_timeout 65 180;
client_header_timeout 80;
client_body_timeout 80;
3.测试
重启服务,在浏览器输入IP地址,使用抓包工具进行抓包。
systemctl stop nginx.service
systemctl start nginx.service
七.更改Nginx运行进程数
在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成堵塞。
1.配置方式
修改配置文件
修改进程配置参数
2.修改配置文件的worker_processes参数
1.一般设为cpu的个数或者核数
2.在高并发情况下可设置为cpu个数或者或者核数的2倍
3.增加进程数,可减少系统的开销,提升服务速度。
4.配置命令
vi /usr/local/nginx/conf/nginx.conf
ulimit -n 65535 >> /etc/rc.local //修改最大限制
nginx -t //检查语法
5.验证
systemctl restart nginx.service
ps aux | grep nginx
八.配置网页压缩功能
1.Nginx的ngx_http_gizp_module压缩模块提供对文件内容压缩的功能。
2.允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网路的带宽,提升用户的访问体验,默认已经安装。
3.可在配置文件中加入相应的压缩功能参数对压缩性能进行优化。
1.压缩参数
1.gzip on:开启gzip压缩输出
2.gzip_min_length 1k:设置允许压缩的页面最小字节数
3.gzip_buffers 4 16k:申请4个单位为16k的内存作为压缩结果 流缓存,默认值是申请与原始数据大小相同的内存空间来存储 gzip压缩结果
4.gzip_http_version 1.0:设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,但处理较慢,也比较消耗服务器CPU资源
5.gzip_comp_level 2:指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理速度最慢 。
6.gzip_types text/plain:压缩类型,对哪些网页文档启用压缩功能
7.gzip_vary on:让前端缓存服务器缓存经过gzip压缩的页面
2.配置命令
vim /usr/local/nginx/conf/nginx.conf
gzip on; //开启gzip压缩功能
gzip_min_length 1k; //压缩阈值
gzip_buffers 4 16k; //buffer 大小为4个16k缓冲区
gzip_http_version 1.1; //压缩版本
gzip_comp_level 6; //压缩比率,最小为1,最大为9
gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php application/ javascript application/json;
gzip_disable "MSIE [1-6]\."; //配置禁用gzip条件,支持正则,表示ie6以下的不启用gzip
gzip_vary on; //选择支持very header 可以让前端的缓存服务器缓存经过gzip压缩的页面。
nginx -t //测试语法
systemctl restart nginx //重启服务
3.测试
浏览器输入IP地址,使用抓包工具进行抓包。
九.配置Nginx防盗链
1.配置说明
1. ~*\.(jpg|gif|swf)$:匹配以.jpg或.gif或.swf结尾的不区分大小写的文件
2.valid_referers:设置信任的网站,即能引用相应图片的网站
3.网址或者域名: referer中包含相关字符串的网址
4.if语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为1,则执行后面的操作,即进行重写或返回403页面
2.配置命令
vim /usr/local/nginx/conf/nginx.conf
location ~* \.(gif|swf||jpg)$ {
valid_referers none blocked *.aa.com aa.com 192.168.52.13;
if ($invalid_referer) {
rewrite ^/ http://192.168.52.13/error.png;
}
客户机上
3.测试
浏览器输入盗链地址,192.168.52.11