文章目录
配置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大小为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 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 ##动态方式下最大空闲进程数