• Nginx优化与防盗链



    前言

    在企业信息化应用环境中。服务器的安全性和响应速度需要根据实际的情况进行相应的参数配置,达到最优的用户体验。
    默认的Nginx安装参数之恶能提供最基本的服务,还需要调整如网页时间、连接超时、网页压缩等响应参数,才能发挥服务器的最大作用。


    一、Nginx 服务优化

    1.查看方法

    cuil 命令

    curl -l http://192.168.226.131   #查看的是头部信息
    
    • 1

    在这里插入图片描述

    2.浏览器查看

    浏览器 → 开发者工具(F12) → 选择network → 刷新页面(Ctrl +r) → 选择请求 → 选择 headlers → 查看版本

    二、隐藏版本号

    可以在CentOS系统中使用curl -I http://192.168.226.131显示响应报文头部信息

    curl -I http://192.168.226.131
    
    • 1

    在这里插入图片描述

    修改配置文件

    vim /usr/local/nginx/conf/nginx.conf        #编辑配置文件
    systemctl restart nginx      #重启nginx
    curl -I http://192.168.226.131    #再次查看头部信息
    
    • 1
    • 2
    • 3

    在http中添加server_tokens off,关闭版本号
    在这里插入图片描述

    curl -I http://192.168.226.131
    
    • 1

    在这里插入图片描述

    三、修改用户和组

    vim /usr/local/nginx/conf/nginx.conf
    
    • 1

    在这里插入图片描述

    systemctl restart nginx      #重启nginx
    ps aux |grep nginx      #查看进程
    
    • 1
    • 2

    查看用户
    在这里插入图片描述

    四、设置缓存时间

    缓存时间表示,当客户端访问nginx服务器时,可以设置缓存时间,假如设置了1天。表示客户端再一天内访问该页面,将不会再向nginx服务器发送连接请求,而是直接从自己的缓存中读取就行,超过一天,就需要重新申请连接,可以设置天,时,分等

    vim /usr/local/nginx/conf/nginx.conf
    
    • 1

    在这里插入图片描述

    cd /usr/local/nginx/html/
    
    • 1

    添加图片
    在这里插入图片描述
    访问网页 http://192.168.226.131/图片名字

    访问 http://192.168.226.131/1.jpg ,双击200响应消息查看响应头中包含 Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。
    在这里插入图片描述

    五、日志切割

    
    vim /rizhifenge.sh
    #!/bin/bash
    d=$(date -d "-1 day" "+%Y%m%d")                 #显示前一天的时间
    logs_path="/var/log/nginx"
    pid_path=`cat /usr/local/nginx/logs/nginx.pid`
    [ -d $logs_path ] || mkdir -p $logs_path        #创建日志文件目录
    #移动并重命名日志文件
    mv /usr/local/nginx/logs/access.log ${logs_path}/wu.com-access.log-{$d} 
    #重建日志文件
    kill -USR1 $pid_path
    #删除30天前的日志文件                   
    find $logs_path -mtime +30 -exec rm -rf {} \;
    #find $logs_path -mtime +30 |xargs rm -rf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    编辑脚本
    在这里插入图片描述
    添加权限,执行脚本
    在这里插入图片描述
    查看分割的日志
    在这里插入图片描述
    设置周期性计划任务
    在这里插入图片描述

    六、连接超时

    keepalive_timeout(tcp连接三次握手的超时时间)
    指定keepalive的超时时间(timeout),指定每个TCP连接最多可保持多长时间,服务器将会在这个时间后关闭连接,nginx的默认值是65秒,有些浏览器最多只保持60秒,所以可设定为60秒,若将它设置为0,就禁止了keepalive连接。
    第二个参数(可选的)指定了再相应头keep-alive:timeout=time中的time值。这个头能让一些浏览器主动关闭连接,这样服务器就不必去关闭连接了。没有这个参数,nginx不会发送keep-alive相应头。

    client_header_timeout(客户端请求头的超时时间)
    客户端向服务器发送一个完整的request header(请求头)的超时时间,如果客户端再指定时间内没有发送一个完整的request header,nginx返回httpd408的返回码(request timed out:请求超时)

    clent_body_timeout(客户端请求体的超时时间)
    指定客户端与服务器建立连接后发送request body的超时时间,如果客户端在指定时间内没有发送任何内容,nginx返回HTTPD408(request timed out)
    ​HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
    ​KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。

    vim /usr/local/nginx/conf/nginx.conf
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    七、更改进程数

    查看cpu核数

    cat /proc/cpuinfo |grep -c "physical id"
    
    • 1

    在这里插入图片描述
    查看nginx主进程中包含几个子进程
    在这里插入图片描述

    vim /usr/local/nginx/conf/nginx.conf
    
    • 1

    在这里插入图片描述
    重启查看进程
    在这里插入图片描述
    01表示启用第一个CPU内核,10表示启用第二个CPU内核
    worker cpu affinity 0110;表示开启两个进程,第一个进程对应着第一个CP U内核,第二个进程对应着第二个CPU内核

    八、配置网页压缩

    vim /usr/local/nginx/conf/nginx.conf
    http {
    ...... 
    gzip on;       #取消注释,开启gzip压缩功能
       gzip_min_length 1k;        #最小压缩文件大小
       gzip_buffers 4 64k;        #压缩缓冲区,大小为4个64k缓冲区
       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;  #压缩类型,表示哪些网页文档启用压缩功能
    ...... 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    vim /usr/local/nginx/html/index.html
    
    • 1

    访问192.168.226.131,查看图片Content-Encoding: gzip
    在这里插入图片描述

    九、盗链与防盗链

    盗链端:192.168.226.132 nginx
    服务端:192.168.226.131 nginx
    地址映射关系
    在这里插入图片描述

    1.盗链

    配置盗链端

    修改盗链端的网页文件,我们盗链端的网页文件下是没有图片的
    在这里插入图片描述
    服务端的网页文件有图片,我们指向网页端的IP和图片名
    在这里插入图片描述
    此时访问盗链端的域名:www.sen.com
    在这里插入图片描述

    2.防盗链

    我们可以在服务端配置文件中配置防盗
    在server块中添加loction,如果不是以域名ngs.com访问的将指向一个指定图片error.png
    在这里插入图片描述

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

    我们提前准备好的指定图片
    在这里插入图片描述
    再次访问www.sen.com会将我们服务端配置指向的图片输出出来
    在这里插入图片描述


  • 相关阅读:
    一周侃 | 周末随笔及推荐
    ONNX+TensorRT:将预处理操作写入ONNX并完成TRT部署
    深入浅出Spring源码(一)构建Spring源码阅读环境
    搭建微信小程序环境及项目结构介绍
    代码随想录Day42 | 01背包问题| 416. 分割等和子集
    vscode提示扩展主机在过去5分钟内意外终止了3次,解决方法
    [python] 使用 Selenium 和 chromedirver 抓取网页
    组合电路、触发器、时序电路
    python+vue+elementui在线跑腿系统django
    8年测试老鸟,性能测试-数据库连接池问题定位/分析,一篇打通...
  • 原文地址:https://blog.csdn.net/S314118142/article/details/126608297