Nginx优化与防盗链
隐藏Nginx版本号,避免安全漏洞泄露
第一种方法:修改配置文件
1.进nginx.conf文件
[root@zzz ~]# cd /usr/local/nginx/conf/
[root@zzz conf]# vim nginx.conf
2.重启服务,验证
[root@zzz conf]# systemctl restart nginx.service
也能通过命令获取
第二种方法:修改源码法
make && make install
[root@zzz nginx-1.12.2]# cd /usr/local/nginx/conf/
[root@zzz conf]# vim nginx.conf
重启服务
systemctl restart nginx
修改Nginx用户与组
修改的方法
第一种:编译安装时指定用户与组
第二种:修改配置文件指定用户与组
配置Nginx网页缓存时间
当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度
一般针对静态网页设置,对动态网页不设置缓存时间
重启服务
[root@zzz conf]# systemctl restart nginx.service
实现Nginx的日志切割
编写脚本进行日志切割的思路
脚本内容如下
在脚本倒数第二行 PID_PATH加上$符号
配置Nginx实现连接超时
为避免同一客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间
超时参数
Keepalive_timeout
设置连接保持超时时间
Client_header_timeout
指定等待客户段发送请求头的超时时间
Client_body_timeout
设置请求体读超时时间
[root@zzz nginx]# cd /usr/local/nginx/conf/
[root@zzz conf]# vim nginx.conf
systemctl restart nginx
更改Nginx运行进程数
默认情况,Nginx的多个进程可能跑在一个CPU上,可以分配不同的进程给不同的CPU处理,充分利用硬件多核多CPU
[root@zzz conf]# vim nginx.conf
[root@zzz conf]# ulimit 10240
[root@zzz conf]# systemctl restart nginx.service
默认情况,Nginx的多个进程可能跑在一个CPU上,可以分配不同的进程给不同的CPU处理,充分利用硬件多核多CPU
在一台4核物理服务器,进行配置,将进程进行分配
重启服务
[root@zzz conf]# systemctl restart nginx
配置Nginx实现网页压缩功能
Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能
允许Nginx服务器将输出内容在发送客户端之前进行压缩,以
约网站带宽,提升用户的访问体验,默认已经安装
可在配置文件中加入相应的压缩功能参数对压缩性能进行优化
压缩功能参数
gzip on: 开启gzip压缩输出
gzip_min_length 1k: 设置允许压缩的页面最小字节数
gzip_buffers 4 16k:申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
gzip_http_version 1.0: 设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,但处理较慢,也比较消耗服务器CPU资源
gzip_comp_level 2: 指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理速度最慢
gzip_types text/plain:压缩类型,对哪些网页文档启用压缩功能
gzip_vary on:让前端缓存服务器缓存经过gzip压缩的页面
[root@zzz conf]# vim nginx.conf
gzip on;
gzip_min_length 1k;
gzip_buffers 4 64k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_vary on;
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;
[root@zzz conf]# systemctl restart nginx.service
[root@zzz conf]# cd ..
[root@zzz nginx]# cd html/
[root@zzz html]# vim index.html
打开网页验证
配置Nginx防盗链
[root@zzz html]# cd /usr/local/nginx/conf
[root@zzz conf]# vim nginx.conf
location ~* \.(jpg|gif|jpeg|swf)$ {
root html;
expires 1d;
valid_referers none blocked *.kgc.com kgc.com;
if ( $invalid_referer ) {
rewrite ^/ http://www.kgc.com/error.png;
}
}
---------------------------------------------------------------
~* \.(jpg|gif|swf)$ :这段正则表达式表示匹配不区分大小写,以.jpg或.gif或.swf 结尾的文件;
valid_referers : 设置信任的网站,可以正常使用图片;
none: 允许没有http_refer的请求访问资源(根据Referer的定义,它的作用是指示一个请求是从哪里链接过来的,如果直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer字段的) 如 http://www.kgc.com/13.jpg
我们使用http://www.kgc.com 访问显示的图片, 可以理解成 http://www.kgc.com/13.jpg这个请求是从http://www.kgc.com这个连接过来的
blocked:允许不是http://开头的,不带协议的请求访问资源;
*.kgc.com:只允许来自指定域名的请求访问资源,如 http://www.kgc.com
if语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_ referer为true,则执行后面的操作,即进行重写或返回403页面。
[root@zzz conf]# systemctl restart nginx.service
准备一台盗链机
先安装nginx服务(这里不做演示,有需要看上一章博客)
[root@localhost html]# vim index.html
开浏览器验证
``