Nginx优化与防盗链

网友投稿 304 2022-09-29

Nginx优化与防盗链

####Nginx优化与防盗链

Nginx服务优化Nginx深入优化

隐藏Nginx版本号,避免安全漏洞泄漏Nginx隐藏版本号的方法●修改配置文件法●修改源码法

将Nginx配置文件中server_ tokens选项的值设置为off[root@conf]# vim nginx.conf

......

server_tokens off;关闭版本号

.......

[root@conf]# nginx -t重启服务,访问网站使用curl -l命令检测

修改版本号

Nginx源码文件/usr/src/nginx-1.12.0/src/core/nginx.h包含版本信息,可以随意设置重新编译安装,隐藏版本信息示例●#define NGINX VERSION "1.1.1” ,修改版本号为1.1.1●#define NGINX VER "IIS/”,修改软件类型为IIS重启服务,访问网站使用curl -|命令检测

修改Nginx用户和组

Nginx运行时进程需要有用户与组的支持,以实现对网站文件读取时进行访问控制Nginx默认使用nobody用户账号与组账号修改的方法

编译安装时指定用户与组 修改配置文件指定用户与组

当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度一般针对静态网页设置,对动态网页不设置缓存时间

配置Nginx网页缓存

设置方法修改配置文件,在或者server段、 或者location段加入对特定内容的过期参数示例修改Nginx的配置文件,在location段加入expires 参数

location ~ .(gifljpg |jepg | png |bmp|ico)$ { root html;expires 1d;

实现Nginx的日志切割

随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件太大的日志文件对监控是一个大灾难●定期进行日志文件的切割Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割通过Linux的计划任务周期性地进行日志切割

编写脚本进行日志切割的思路设置时间变量 【day=$(date -d "-1 day" " + %Y%m%d")】设置保存日志路径 【d=/var/log/nginx [-d $d] || mkdir -p $d】将目前的日志文件进行重命名 【mv logs/access.log $d/access.log-$day】重建新日志文件 【kill -USR1 $(cat $PID)】删除时间过长的日志文件 【find $d -mtime +30 -exec rm -rf {} \;】设置cron任务,定期执行脚本自动进行日志分割 【crontab -e00*; /usr/log/nginx/logfenge.sh】

编写脚本进行日志切割的思路[root@logs]# vim /opt/fenge.sh#!/bin/bash

#Filename: fenge.sh

d=$(date -d "-1 day" "+%Y%m%d")logs path="/var/log/nginx"pid path="/usr/local/nginx/logs/nginx.pid" [ -d $logs_path ] |I mkdir -p $logs_pathmv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$dkill -USR1 $(cat $pid_path)find $logs_path -mtime +30 |xargs rm -rf

配置Nginx实现连接超时

为避免同- -客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间超时参数●Keepalive_timeout设置连接保持超时时间●Client header timeout指定等待客户端发送请求头的超时时间●Client_body_timeout设置请求体读超时时间

连接超时:HTTP有一个KeepAlive模式,它告诉web服务器在处理完a个 请求后保持这个TCP连接的打开状态。若接收到来自 同一客户端的其它请求, 服务端会利用这个未被关闭的连接,而不需要再建立--个连接。KeepAlive在一段时 间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。vim /usr/1ocal/nginx/ conf/nginx . conf{......keepalive timeout 65 180;client header timeout 80;client body_ timeout 80;

......

}

systemctl restart nginx

keepalive_ timeout指定KeepAlive的超时时间(timeout) 。指定每个TCP连接最多可以保持多长时间,服务器将会在这个时间后关闭连接。Nginx的默认值是65秒,有些浏览器最多只保持60秒,所以可以设定为60秒。若将它设置为0,就禁止了keepalive连接。第二个参数(可选的)指定了在响应头Keep- -Alive: timeout=t ime中的time值。这个头能够让一- 些浏览器主动关闭连接,这样服务器就不必去关闭连接了。没有这个参数,Nginx 不会发送Keep-Alive 响应头。

client header t imeout客户端向服务端发送一 个完整的request header 的超时时间。如果客户端在指定时间内没有发送一个完整的 request header, Nginx返回HTTP 408 (Request Timed Out)。

client body timeout指定客户端与服务端建立连接后发送request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx返回HTTP408 (Request Timed Out) 。

更改Nginx运行进程数****

在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞更改进程数的配置方法●修改配置文件,修改进程配置参数

修改配置文件的worker_ processes参数●一般设为CPU的个数或者核数●在高并发情况下可设置为CPU个数或者核数的2倍增加进程数,可减少了系统的开销,提升了服务速度使用ps aux查看运行进程数的变化情况[root@conf]# cat /proc/cpuinfo | grep -C "physical"4[root@conf]# vi nginx.confworker_ processes 4; [root@conf]# systemctl restart nginx[root@conf]# ps aux | grep nginx

默认情况,Nginx的多个进程可能跑在一-个CPU上,可以分配不同的进程给不同的CPU处理,充分利用硬件多核多CPU在一台4核物理服务器,进行配置,将进程进行分配[root@conf]# vi nginx.confworker_processes 4; worker_cpu_affinity 0001 0010 0100 1000;

配置Nginx实现网页压缩功能

Nginx的ngx gzip_ module压缩模块提供对文件内容压缩的功能允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装可在配置文件中加入相应的压E缩功能参数对压缩性能进行优化

配置Nginx实现网页压缩功能

压缩功能参数gzip on:开启gzip压缩输出gzip_min_length 1k:设置允许压缩的页面最小字节数gzip_buffers 416k:申请4个单位为1 6k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果gzip_1.0:设置识别level 2:指定gzip压缩比,1压缩比最小,处理速度最快; 9压缩比最大,传输速度快,但处理速度最慢●gzip_types text/plain:压缩类型,对哪些网页文档启用压缩功能●gzip_vary on:让前端缓存服务器缓存经过gzip压缩的页面

配置防盜链vim /usr/ local/nginx/conf/nginx. conf{

......

​ server{

......

​ location ~ \. (jpgIgiflswf)$ {​ valid_ referers none blocked . kgc. com kgc. com;​ if ( $invalid_ referer ) {​ rewrite ^/ /kgc. com/error.png;​ #return 403;​ }

​ }

​ ......

​ }

}

~\. (ipgIgifIswf)$ :这段正则表达式表示匹配不区分大小写,以.jpg或.gif或.swf结尾的文件: valid_referers :设置信任的网站,可以正常使用图片:none:允许没有字段的),如kgc。com/game . jipg我们使用。kgc.com访问显示的图片,可以理解成, kgc, com/game.jpg这个请求是从/com

if语句:如果链接的来源域名不在valid referers所列出的列表中,$invalid referer为true, 则执行后面的操作,即进行重写或返回403页面。

而试题:以前用过哪些nginx的模块和做过哪些优化gzip 网站数据压缩rewrite 地址重写stub status 统计nginx服务状态ssl 支持得先用openss1或者TLS工具生成相关证书和私钥文件。再在ss1模块配置中调用证书和私钥upstream 使用nginx做反向代理web群集,定义群集服务器池stream 用于定义4层反向代理的auth basic 用户认证fastcgi 转发请求给php

-with-模块名 开启模块-without-模块名 禁用模块隐藏版本号 压缩 缓存 防盗链 连接保持 优化工作进程和进程连接数 日志分割 反向代理

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java实现实时通信聊天程序
下一篇:透析阿里云视频云「低代码音视频工厂」之能量引擎——vPaaS视频原生应用开发平台
相关文章

 发表评论

暂时没有评论,来抢沙发吧~