引言:Nginx的优化很多,为了让用户有更好的体验优化还是有必要的。像版本隐藏,需要隐藏nginx的版本号,以免安全漏洞泄露,还有连接超时,网页压缩等,让服务器发挥最大的作用。
目录
一、隐藏Nginx的版本号
1.查看Nginx版本号的方法
①本地查看
输入命令curl -I http://192.168.72.8
②浏览器查看
我这边用的是IE浏览器,输入192.168.72.8,打开开发者工具,选择网络,刷新页面,找到192.168.72.8点开,在响应头可以找到
2.隐藏版本号
①修改配置文件
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
server_tokens off; #添加,关闭版本号
}
systemctl restart nginx
curl -I http://192.168.226.128
②修改源码
vim /opt/nginx-1.12.0/src/core/nginx.h
#define NGINX_VERSION "1.1.1" #修改版本号
#define NGINX_VER "IIS" NGINX_VERSION #修改服务器类型
cd /opt/nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
#重新编译安装
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
server_tokens on; #打开
)
#开启版本号
#重启服务
systemctl restart nginx
curl -I http://192.168.72.8
二、修改用户和组
没有安装nginx前没有创建用户,则在此服务中默认使用的是nobody
默认是Nginx默认使用nobody用户账号与组账号,修改成下面内容
重启服务,查看服务状态
三、缓存时间
vim /usr/local/nginx/conf/nginx.conf
http {
server {
location / {
root html;
index index.html index.htm;
}
location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { #加入新的location以图片作为缓存对象
root html;
expires 1d; #指定缓存时间,1天
}
}
}
nginx -t 查看服务是否成功运行,systemctl restart nginx 重启nginx服务
上传图片、修改站点文件
cd /usr/local/nginx/html
vim inde.html
<h1>Welcome to nginx</h1>
<img src="rabbit. jpg"/> #插入识别图片
输入网址测试,或者curl测试
四、日志分割
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" #定义存放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) #重载nginx
find $logs_path -mtime +30 | xargs rm -rf #删除前三十天的日志
chmod +x /opt/fenge.sh #分割日志的脚本赋权
crontab -e #创建计划任务
systemctl restart nginx #重启nginx
netstat -natp | grep nginx #查看端口是否开启
bash -x fenge.sh #运行脚本测试
ls /var/log/nginx可以看到前一天的日志
五、连接超时
vim /usr/local/nginx/conf/nginx. conf
#keepalive_timeout 0;
keepalive_timeout 100;
client_header_timeout 80; #等待客广端发送请求头的超时时间,超时会发送408错误
client_body_timeout 80; #等待客户端发送请求体的超时时间
六、更改进程数
可以使用nproc查看cpu核心数,根据cpu核数配置进程,把进程分配给cpu,充分利用cpu性能
vim /usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 4; #修改与CPU核数相同或2倍
worker_cpu_affinity 0001 0010 0100 1000; #设置每个进程由不同的cpu处理
七、页面压缩
vim /usr/local/nginx/conf/nginx.conf
http {
gzip on; #取消注释,开启gzip压缩功能
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 16k; #压缩缓冲区,大小为4个16k缓冲区
gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0 )
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; #压缩类型,表示哪些网页文档启用压缩功能
}
cd /usr/local/nginx/html #到这个目录下拷贝图片的页面进行测试
vim index.html
<img src="wan.jpg"/> #网页中插入图片
</body>
</html>
systemctl restart nginx #重启Nginx服务
八、盗链与防盗链
1.盗链
盗链端:192.168.72.9 nginx
服务端:192.168.72.8 nginx
win10:192.168.72.10 #配置/host
服务端准备(72.8):
vim /etc/hosts
echo "192.168.72.8" >> www.abc.com
rm -rf /usr/local/nginx/html/index.html
vim /usr/local/nginx/html/index.html
<h1>Hello</h1>
<img src="wan.jpg"/>
cd /usr/local/ngin/html #上传图片
盗链端准备(72.9):
vim /usr/local/nginx/conf/nginx.conf
server_name www.123.com
vim /usr/local/nginx/html/index.html
<html>
<body>
<h1>this daolian</h1>
<img src="http://www.abc.com/wan.jpg"/>
</body>
</html>
vim /etc/hosts
192.168.72.9 www.abc.com
在另一台机器进行验证
vim /etc/hosts
192.168.72.9 www.abc.com www.123.com
2.防盗链
location ~*\.(jpg|gif|swf)$ {
valid_referers *.abc.com abc.com;
if ($invalid_referer ) {
rewrite ^/ http://www.abc.com/error.png;
#return 403;
}
}
测试