Nginx优化与防盗链

时间秒杀一切 提交于 2019-12-30 22:52:18

一、版本号

在生产环境中,需要隐藏Nginx的版本号,以避安全漏洞的泄露
查看方法:

  • 使用 fiddler工具在Windows客户端查看nginx版本号
  • 在Centos系统中使用"curl -l 网址" 命令查看
隐藏版本号

1、查看版本号

[root@localhost html]# curl -I http://192.168.232.159/        查看版本号
HTTP/1.1 200 OK
Server: nginx/1.12.2    		版本号
Date: Mon, 30 Dec 2019 08:43:23 GMT
Content-Type: text/html
Content-Length: 651
Last-Modified: Mon, 30 Dec 2019 08:22:02 GMT
Connection: keep-alive
ETag: "5e09b3aa-28b"
Accept-Ranges: bytes

2、进入:vim /usr/local/nginx/conf/nginx.conf
http { 下面插入
server_tokens off;

3、查看版本号,已经隐藏

[root@localhost html]# curl -I http://192.168.232.159/
HTTP/1.1 200 OK
Server: nginx        		 已经隐藏版本号
Date: Mon, 30 Dec 2019 08:48:01 GMT
Content-Type: text/html
Content-Length: 651
Last-Modified: Mon, 30 Dec 2019 08:22:02 GMT
Connection: keep-alive
ETag: "5e09b3aa-28b"
Accept-Ranges: bytes
修改版本号

1、进入:vim /usr/local/nginx/conf/nginx.conf
http { 下面插入
server_tokens on;

2、进入:vim /home/nginx-1.12.2/src/core/nginx.h
#define NGINX_VERSION “1.1.111” 修改版本号

3、重新编译

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

#重启
systemctl stop nginx
systemctl start nginx

二、缓存

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

1、cd /usr/local/nginx/html/ 里面放入图片
在这里插入图片描述
2、vim /usr/local/nginx/conf/nginx.conf

 location ~\.(gif|jpeg|jpg|ico|bmp|png)$ {
            root html;
            expires 1d;
        }

systemctl start nginx 重启
3、抓包
在这里插入图片描述

三、进程管理

  • 在高并发场景,需要启动更多的nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞

1、插入变量

vim /usr/local/nginx/conf/nginx.conf
#插入:配置文件
    keepalive_timeout  65 180;				设置客户端超时时间180秒
    client_header_timeout 80;				
    client_body_timeout 80;

重启nginx

2、关机添加处理器2

3、进入:vim /usr/local/nginx/conf/nginx.conf

worker_processes  2;
worker_cpu_affinity 01 10;

重启nginx,worker此时变成两个
在这里插入图片描述

四、日志分割

1、创建脚本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 ] || mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 | xargs rm -rf

2、chmod +x fenge.sh 添加权限
./fenge.sh 执行脚本
在这里插入图片描述

五、防盗链

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

实验环境:
一台终端机,两台wind10(一台用于盗链,一台用于测试)。提前在终端机上安装号带有网页的nginxhttpd,配置好dns
1、一台做盗链的wind10上写一个默认首页
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、在nginx配置防盗链文件插入
vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述
重启nginx服务

验证:
在这里插入图片描述
总结:防盗链主要注意最后结果是盗链网站的ip地址在刷新一下就变成另外一个图片就表示实验成功,注意盗链和防盗链的逻辑关系。

六、网页压缩功能

1、修改配置文件
vim /usr/local/nginx/conf/nginx.conf

    gzip on;	
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types text/plain application/x-javascript text/css image/jpg image/j
peg image/png image/gif application/xml text/javascript application/x-httpd-p
hp application/javascript application/json;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;

gzip on :开启gzip压缩输出
gzip_min_length 1k : 表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
zip_http_version 1.0 : 用于设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,但处理最慢,也比较消耗服务器CPU资源。

2、在首页中放入图片验证,重启服务
在这里插入图片描述

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!