Nginx优化与防盗链

文章目录

  • 前言
  • 一、Nginx优化
    • 1.1配置Nginx隐藏版本号
      • 1.1.1修改配置文件法
      • 1.1.2修改源码法(修改源码法要在编译之前)
    • 1.2修改Nginx用户与组
    • 1.3配置Nginx网页缓存时间
    • 1.4实现Nginx的日志切割
    • 1.5配置Nginx实现连接超时
    • 1.6更改Nginx运行进程数
    • 1.7Nginx网页压缩
  • 二、Nginx防盗链配置

前言

为了适应企业需求,就需要考虑如何提升Nginx的性能与稳定性,这就是Nginx优化的内容,本次博客主要讲述Nginx的优化以及防盗链的部署。
Nginx的详细编译安装过程可以参考博主前一篇文章。
https://blog.csdn.net/chengu04/article/details/107894677

一、Nginx优化

1.1配置Nginx隐藏版本号

●隐藏Nginx版本号,避免安全漏洞泄露
●Nginx隐藏版本号的方法
未隐藏版本号前使用curl -I(大写的i)命令检测结果

[root@localhost ~]# curl -I http://14.0.0.40
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 10 Aug 2020 14:13:04 GMT

1.1.1修改配置文件法

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;               ##关闭版本号
[root@localhost ~]#  curl -I http://14.0.0.40   ##访问网站使用curl -I命令检测
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 10 Aug 2020 14:16:42 GMT

1.1.2修改源码法(修改源码法要在编译之前)

[root@localhost ~]# vim /root/nginx-1.12.2/src/core/nginx.h
#define nginx_version      1012002
#define NGINX_VERSION      "1.1.1"
#define NGINX_VER          "nginx/" NGINX_VERSION
[root@localhost ~]# curl -I http://14.0.0.40
HTTP/1.1 200 OK
Server: nginx/1.1.1
Date: Mon, 10 Aug 2020 14:13:04 GMT

1.2修改Nginx用户与组

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

1.创建用户账号与组账号,如nginx
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
2.编译安装--user与--group指定Nginx服务的运行用户与组账户
[root@localhost nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \

修改主配置文件指定用户与组
Nginx优化与防盗链_第1张图片

1.3配置Nginx网页缓存时间

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

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
...省略内容
location ~\.(gif|jpg|jepg|pngico)$ {
            root   html;
            expires 1d;
        }

Nginx优化与防盗链_第2张图片

1.4实现Nginx的日志切割

●随着Nginx运行时间增加,日志也会增加。太大的日志文件对监控是一个大灾难。所以需要定期进行日志文件的切割
●Nginx自身不具备日志分割处理的功能,但可以通过Nginx信号控制功能的脚本实现日志的自动切割(Kill -HUP cat /xxx/log/nginx.pid #平滑重启nginx,类似reload)
-QUIT :结束进程;-USR1:日志分割;-USR2:平滑升级

●通过Linux的计划任务周期性地进行日志切割
●编写脚本进行日志切割示例

[root@localhost ~]# vim /root/fenge.sh
#!/bin/bash
#设置时间和日志名称的变量
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
#通过重载生成新日志(平滑的读取新配置文件,不必重启nginx)
kill -HUP $(cat $pid_path)
#删除30天前的日志(echo '--help' | xargs cat 等价于 cat --help)
find $logs_path -mtime +30 | xargs rm -rf

[root@localhost ~]# chmod +x fenge.sh
#设置crontab任务,每天1点执行自动进行日志分割的脚本
[root@localhost ~]# crontab -e
0 1 * * * /root/fenge.sh

date -d :-d选项设置时间格式;+%Y%m%d :日期显示的格式
Nginx优化与防盗链_第3张图片

mtime:修改数据的时候,更新这个时间
ctime:更改元信息(权限或者属性)的时候,更新这个时间
atime:访问文件的时候,更新这个时间

1.5配置Nginx实现连接超时

●为避免同一客户端长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间
●Nginx使用keepalive_timeout来指定KeepAlive的超时时间(timeout)
●指定每个TCP连接最多可以保持多长时间。Nginx的默认值是65秒,有些浏览器最多只保持60秒,
若将它设置为0,就禁止了keepalive连接。

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
http {
.....
    keepalive_timeout  100;
    client_header_timeout 80;    ##等待客户端发送请求头的超时时间 超时会发送408错误
    client_body_timeout 80;    ##设置请求体的读超时时间
}

1.6更改Nginx运行进程数

●在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞。
●修改配置文件的worker_processes参数
一般设为CPU的个数或者核数
在高并发情况下可设置为CPU个数或者核数的2倍
●增加进程数,可减少了系统的开销,提升了服务速度
●使用ps aux查看运行进程数的变化情况

[root@localhost ~]# cat /proc/cpuinfo | grep -c "physical id"   ##查看物理CPU的个数
4
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
worker_processes 4       ##将工作进程数设为4
[root@localhost ~]# service nginx stop
[root@localhost ~]# service nginx start

Nginx优化与防盗链_第4张图片

1.7Nginx网页压缩

1.主配置文件中找到gzip on添加如下参数

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
   gzip  on;              ##开启gzip压缩功能
    gzip_min_length 1k;   ##压缩阈值(超过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 application/javascript application/json;
    gzip_disable "MSIE [1-6]\.";   ##配置禁用gzip条件,支持正则,表示ie6以下不启用
    gzip_vary on;       ##选择支持vary header可以让前端的缓存服务器缓存经过gzip压缩的页面

2.在/usr/local/nginx/html目录下插入jpg图片

[root@localhost ~]# vim /usr/local/nginx/html/index.html
...省略内容

Welcome to nginx!

##加入标签

3.使用win10客户端访问网页,并使用fiddler软件抓包验证。
Nginx优化与防盗链_第5张图片

二、Nginx防盗链配置

1.源主机配置
源主机的域名:www.test.com
做www.test.com–》14.0.0.40的域名解析
首页站点中放入一张image.jpg图片
2.盗链网站首页配置

[root@localhost ~]# vim /var/www/html/index.html

this is copy

3.win10客户端访问盗链网站服务器的地址进行测试
Nginx优化与防盗链_第6张图片

4.源主机防盗链配置

[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
...省略内容
 location ~*\.(gif|jpg|swf)$ {
          valid_referers none blocked *.test.com test.com;
          if ($invalid_referer) {
            rewrite ^/ http://www.test.com/error.png;
           }
        }

5.win10客户端再次访问盗链网站服务器的地址进行测试
Nginx优化与防盗链_第7张图片

你可能感兴趣的:(企业网站架构部署和优化)