Nginx优化与防盗链

配置Nginx隐藏版本号

隐藏Nginx版本号,避免安全漏洞泄露
Nginx隐藏版本号方法

  • 修改配置文件法可以直接隐藏版本号
  • 修改源码法可以做版本号的篡改

修改配置文件法

  • 修改Nginx配置文件中server_tokens选项设置为off
  • 重启服务,访问网站使用curl-l命令检测

关闭版本号,修改nginx的配置文件

[root@promote conf]# vim /usr/local/nginx/conf/nginx.conf
http {    
             include       mime.types;    
             default_type  application/octet-stream;
             server_tokens off;    ##添加关闭版本号
[root@promote conf]# service nginx restart    ##重启服务

修改源码法

  • Nginx源码文件/usr/src/nginx-1.12.0/src/core/nginx.h包含版本信息,可以随意设置
  • 重写编译安装,隐藏版本信息
  • 重启服务,访问网站使用curl -l命令检测

●修改nginx.h文件

[root@promote /]# vim /opt/nginx-1.12.2/src/core/nginx.h

在这里插入图片描述
步骤不变,照常编译安装nginx,然后用命令去查看,发现版本号发生改变
在这里插入图片描述

修改nginx的用户与组

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

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

修改配置文件法指定

●新建用户账号,如nginx
●修改主配置文件user选项,指定用户账号与组账号
●重启nginx服务,使配置生效
●使用ps aux命令查看nginx的进程信息,验证运行用户账号改变结果

直接修改nginx的配置文件,修改第一行的内容,wq保存
在这里插入图片描述
启动nginx的服务,用ps aux | grep nginx的查看进程状况

[root@promote conf]# service nginx start

在这里插入图片描述

配置Nginx网页缓存时间

●当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度
●一般针对静态网页设置,对动态网页不设置缓存时间
●设置方法:
修改配置文件,在http段,或者server段,或者location段加入对特定内容的过期参数

nginx网页缓存时间实验

1.修改nginx的配置文件,设置缓存时间最大为1天

[root@promote conf]# vim nginx.conf    ##修改配置文件
 location ~\.(gif|jpg|jpeg|png|ico)$ {
                    root   html;
                    expires 1d;  
                }

在这里插入图片描述
2.将图片文件放到html目录下
[root@promote conf]# cd …/html/
在这里插入图片描述
3.编辑index.html文件
在这里插入图片描述
4.编辑完成后重启服务,回到win10系统中输入IP地址用抓包软件查看头部信息
在这里插入图片描述

实现Nginx的日志分割

●随着Nginx运行时间增加,日志也会增加。为了方便掌握Nginx运行状态,需要时刻关注Nginx日志文件
●太大的日志文件对监控是一个大灾难

  • 定期进行日志文件的切割

●Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割
●通过Linux的计划任务周期性地进行日志分割

编写脚本进行日志切割的思路

  • 设置时间变量
  • 设置保存日志路径
  • 将目前的日志文件进行重命名
  • 重建新日志文件
  • 删除时间过长的日志文件
  • 设置cron任务,定期执行脚本自动进行日志分割

date -d ##设置时间格式 -1 设置是前一天的日志信息
在这里插入图片描述

日志分割实验

1.opt目录下创建一个分割日志脚本

[root@promote html]# cd /opt/
[root@promote opt]# vim 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 ] || mkdir -p $logs_path
##分割日志
mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
##生成新日志
kill -HUP $(cat $pid_path)
##删除30天前的日志
find $logs_path -mtime +30 | xargs rm -rf
[root@promote opt]# chmod +x fenge.sh       ##添加执行权限

2.到win中多刷新几次网页,再回来查看日志是否生成
在这里插入图片描述

配置Nginx实现连接超时

●为避免同一客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间
●超时参数
Keepalive_timeout

  • 设置连接保持超时时间

Client_header_timeout

  • 指定等待客户端发送请求头的超时时间

Client_body_timeout

  • 设置请求体读超时时间

修改配置文件,设定超时时间
在这里插入图片描述

更改Nginx运行进程数

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

  • 一般设为CPU的个数或者核数
  • 在高并发情况下设置CPU个数或者核数的2倍

●增加进程数,可减少了系统的开销,提升了服务速度
●使用ps aux查看运行进程数的变化情况

更改Nginx运行进程数实验

1.查看核心数支持多少线程

[root@promote opt]# cat /proc/cpuinfo | grep -c "physical"

2.修改nginx的配置文件,将进程数量改为4个
在这里插入图片描述
2.重启服务,用ps aux命令查看
在这里插入图片描述

Nginx实现网页压缩功能

●Nginx的ngx_htto_gzip_ module压缩模块提供对文件内容压缩的功能

●允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装

●可在配置文件中加入相应的压缩功能参数对压缩性能进行优化

网页压缩实验

1.修改配置文件,开启网页压缩功能

gzip  on;             ##开启压缩功能
gzip_min_length 1k;        ##压缩预知
gzip_buffers 4 16k;         ##buffer大小为416k缓冲区大小
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 app
lication/javascript application/json;   ##支持的类型
gzip_disable "MSIE [1-6]\.";   ##配置禁用gzip条件,支持正则,表示ie6以下不启用
gzipgzip_vary on;  ##选择支持vary header 可以让前端的缓存服务器缓存经过gzip压缩页面   

2.回到windows清除缓存页面,再次访问并用抓包软件查看,显示支持gzip
在这里插入图片描述

防盗链优化

防盗链概述

  • 在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失
  • Nginx防盗链功能也非常强大。默认情况下,只需要进行简单的配置,即可实现防盗链处理

防盗链实验

1.做服务器的虚拟机安装DNS服务

[root@localhost ~]# yum -y install bind  ##安装bind工具包
[root@localhost ~]# vim /etc/named.conf   ##修改主配置文件内容

在这里插入图片描述
[root@localhost ~]# vim /etc/named.rfc1912.zones ##修改区域配置文件
在这里插入图片描述
[root@localhost named]# cd /var/named/ ##修改区域数据配置文件
在这里插入图片描述
启动DNS服务
2.这时打开另外一台虚拟机做盗链主机

[root@localhost ~]# yum -y install httpd   ##安装apache服务
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf   ##修改配置文件

在这里插入图片描述
[root@localhost ~]# cd /var/www/html/ ##修改首页内容
在这里插入图片描述

[root@localhost html]# echo "nameserver 192.168.148.135" > /etc/resolv.conf  ##将DNS地址指向服务器地址

3.在win系统中输入地址查看
在这里插入图片描述
4.回到服务器虚拟机,配置防盗链
如果开头为任意字符,那就执行本地访问,如果不是本地访问,就执行重写功能导入error图片

[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
写入脚本
location ~*\.(jpg|gif|swf)$ {
                valid_referers none blocked *.test.com test.com;
                if ( $invalid_referer ) {
                   rewrite ^/ http://www.test.com/error.png;
                }
        }
[root@localhost html]# service nginx restart   ##重启服务

5.回到win10再次访问盗链网站图片发生变化
在这里插入图片描述
配置说明

  • valid_referers:设置信任的网站,即能引用相应图片的网站
  • none:浏览器中 Referer为空的情况,就是直接在浏览器访问图片
  • blocked:referer不为空的情况,但是值被代理或防火墙删除了,这些值不以http://或者https://开头
  • 后面的网址或者域名:referer中包含相关字符串的网址
  • if句:如果链接的来源域名不在 valid_referers所列出的列表中, $invalid_referer为1,则执行后面的操作,即进行重写或返回403页面

fpm参数优化

vim php-fpm.conf
pid = run/php-fpm.pid
pm = dynamicpm.max_children=20       ##static模式下空闲进程数上限,大于下面的值
pm.start_servers = 5       ##动态方式下默认开启的进程数,在最小和最大之间
pm.min_spare_servers = 2    ##动态方式下最少空闲进程数pm.max_spare_servers = 8    ##动态方式下最大空闲进程数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值