nginx页面优化与防盗链

news2024/12/23 9:47:39

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、nginx页面优化
    • 1.版本号
      • 1.1 查看版本号
      • 1.2 修改版本号
        • 1.2.1 修改配置文件
        • 1.2.2 修改源码文件,重新编译安装
    • 2.nginx的日志分割
    • 3.nginx的页面压缩
      • 3.1 配置
      • 3.2 验证
    • 4.图片缓存
      • 4.1 配置
      • 4.2 浏览器页面访问验证
    • 5.连接超时
      • 5.1 配置
    • 6.nginx的并发设置
      • 6.1 配置
  • 二、防盗链
    • 1.配置
    • 2.验证


一、nginx页面优化

1.版本号

对版本号进行更改的目的:可以根据nginx的版本号进行破译,因此都会隐藏后端服务应用的真实版本号

1.1 查看版本号

#使用本地服务地址查询
curl -I 192.168.245.110
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Sun, 25 Jun 2023 01:46:29 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Wed, 21 Jun 2023 14:23:30 GMT
Connection: keep-alive
ETag: "649307e2-264"
Accept-Ranges: bytes
#使用nginx命令查询
nginx -v
nginx version: nginx/1.12.2

1.2 修改版本号

1.2.1 修改配置文件

#切换到nginx的配置文件目录下
cd /usr/local/nginx/
cd conf/
#复制配置文件做备份
cp nginx.conf nginx.conf.bak.2023.6.25
vim nginx.conf
#关闭版本号
在http中添加server_tokens off;

#重启服务
systemctl restart nginx.service

1.2.2 修改源码文件,重新编译安装

#切换到配置文件的目录
cd /opt/nginx-1.12.2/src/core/
#进入配置文件,将配置文件的真是版本号进行修改
vim nginx.h
#define NGINX_VERSION      "whd"

#重新编译安装
cd /opt/nginx-1.12.2/
#编译安装
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
#修改配置文件
cd /usr/local/nginx/conf/
vim nginx.conf
#在源码包中重新定义了版本号,则打开版本号并无影响
在http中将off需改为on打开server_tokens on;

 systemctl restart nginx.service

2.nginx的日志分割

为什么做日志分割:nginx不带日志分割的工具,因此所有的日志分割都是以shell脚本的格式来实现日志的分割

 vim nginxlog.sh

#!/bin/bash
#获取当前日期 
d=$(date +%Y-%M-%d)
#定义存储目录 
dir="/usr/local/nginx/logs/"
#定义需要分割的日志源文件 
logs_file='/usr/local/nginx/logs/access.log'
logs_error='/usr/local/nginx/logs/error.log'
#定义nginx服务的pid文件 
pid_file='/usr/local/nginx/logs/nginx.pid'
if [ ! -d $dir ]
  then
  mkdir $dir
fi
#移动日志文件access error,重新命名
mv ${logs_file} ${dir}/access${d}.log
mv ${logs_error} ${dir}/error${d}.log
#发送信号,给nginx主程序,让nginx生成新的日志文件 
kill -USR1 $(cat ${pid_file})
#日志文件清理,把30天前的日志,直接清除 
find $dir -mtime +30 -exec rm -rf {} \;

给脚本执行权限、执行

chmod 777 nginxlog.sh 
./nginxlog.sh 
cd /usr/local/nginx/logs/
ls
access2023-14-25.log  access.log           error.log
access_.log           error2023-14-25.log  nginx.pid

在这里插入图片描述
创建定时任务可以每个月固定分割一次

crontab -e -u root
0 0 1 * * /opt/nginxlog.sh

3.nginx的页面压缩

压缩的目的:为了节约宽带,提高访问速度

由ngx_http_gzip_module压缩模块所提供的功能,默认是注释掉的,不压缩,需要人工指定配置

3.1 配置

cd /usr/local/nginx/conf/
vim nginx.conf
#找到gzip  on;取消注释并在下面添加
    gzip  on;
    #最小的压缩文件,小与1K就不再压缩了
    gzip_min_length 1k;
    #压缩的缓冲区,4个64K缓冲区
    gzip_buffers 4 64K;
    #压缩版本,默认1.1
    gzip_http_version 1.1;
    #压缩级别1-9,6不大不小,不快不慢,正好
    gzip_comp_level 6;
    #支持前段缓存服务器的压缩功能打开
    gzip_vary on;
    #支持压缩的类型
   gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xmltrss image/jpgmage/ipeg image/png image/gif application/x-httpd-php application/iavascriot application/json;

#检查配置文件、重启服务
nginx -t
systemctl restart nginx

3.2 验证

在这里插入图片描述

4.图片缓存

作用:避免重复访问,导致访问速度变慢,加快访问的时间,主要针对静态页面,动态不设置缓存时间

4.1 配置

vim nginx.conf
#在location ~ \.php$下面添加一个新的,location ~*支持正则匹配,\.转义符,以.gif|jpg|jepg|bmp|ico开头的都文件可以压缩
location ~* \.(gif|jpg|jepg|bmp|ico)$ {
#指定根目录的html,就是/usr/local/nginx/html,指定默认静态页面
             root html;
#设定图片缓存时间为1天
             expires 1d;
}


nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
systemctl restart nginx

4.2 浏览器页面访问验证

清理缓存,查看304就是缓存
在这里插入图片描述
再次清理缓存就是200,没有缓存
在这里插入图片描述
再次刷新又会变成304即是加载的缓存

图片缓存一天:

在这里插入图片描述

5.连接超时

http自带keepalive模式,keepalive为缓存记录时间,(web加大用户访问速度)

web服务器外理完一个请求之后,保持tcp许接,接受到同样的客户端的其他请求时,web服务器就会利用这个未关闭的连接,继续提供相应,不需要再新建连接了keepalive:在一段时间之内保持打开状态,他会占用资源,占用过多资源,影响整体性能。

连接保持,设置取恰当的范围,不可太长(占用资源),不可太短(第二次访问不快

5.1 配置

vim nginx.conf
#keepalive_timeout  65;的意思是指定的tcp连接最多只能保持65秒,在65秒之后,服务器就会关闭连接(nginx默认65秒。一般浏览器都是60秒,可以指定时间,一般60s,如果设置0,nginx就不会在发送包含keepalive的相应头)
#将65修改为60,60s之后关闭连接
keepalive_timeout  60;
#客户端向服务端发送一个完整的请求头的超时时间
client_header_timeout 60;
#客户端向服务端发送一个完整的请求体的超时时间,没有在60s内向web服务器请求发送任何内容,nginx会返回错误代码408——请求超时
client_body_timeout 60;

nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
systemctl restart nginx

6.nginx的并发设置

目的:有很多场景会涉及到高并发,高并发场景是需要进行优化的,需要启动更多的nginx进程,以保证快速响应,处理用户请求,避免阻塞,根据核心数计算:有几个cpu(查看cpu数可以使用命令:cat /proc/cpuinfo | grep processor | wc -l)

nginx工作的核心数和服务器内核之间要么一致,要么是核心数的2倍,如有16个内核,最多给8个,超过8个性能不在提升且会降低稳定性,8个是上限

6.1 配置

vim nginx.conf
#指定内核数,本服务器内核是4个,可给4个
worker_processes  4;
#指定工作的内核编号指定第一个和第二个,要么用第一个,要么用第二个(此处cpu是按二进制排列,第一个表示为0001,第二个为0010,第三个为0100,第四个为0000)
worker_cpu_affinity 01 10 100 0;


nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
systemctl restart nginx

二、防盗链

目的:防止别人盗用网站的图片,一旦使用会回复正在盗用图片,不可以用

1.配置

vim /usr/local/nginx/conf/nginx.conf
location ~ .*\.(gif|jpg|swf|png)$ {
#允许访问不加http直接地址,不加协议请求访问资源,此处*.whd.com whd.com设置信任的网站可以正常使用图片文件
                   valid_referers none blocked www.baidu.com;
#如不是受信任网站                
                   if ( $invalid_referer ) {
#直接返回403
                  return 403;
                }               
}

nginx -t
systemctl restart nginx

cd /usr/local/nginx/html

使用一张6.jpg图片传到当前目录下用于验证
在这里插入图片描述

2.验证

虽然在html中的文件进行了防盗配置,但是还是访问的时候会出来图片,并不是403报错,这是因为:这种形式的访问是直接请求服务器中默认html中的6.jpg文件,是没有头部的(只有二次以上请求才会有referer头部),并且我们在配置文件中添加了[none]这个参数,它的含义就是当我们在没有头部referer时,依然能访问到文件,所以我们配置的防盗链在这个时候是不起作用的。

将none参数去掉验证效果
在这里插入图片描述

systemctl restart nginx

再次访问就会有返回错误
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/687070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宝塔面板SSL证书配置方法(Nginx及Apache环境)

宝塔面板是一款服务器管理软件,可以通过网络轻松管理服务器,提高运维效率,让用户更容易使用服务器,它可以支持Linux操作系统、Windows操作系统,是国内非常受欢迎的主机控制面板,可以通过交互界面完成服务器…

《深度学习入门:基于python的理论与实现》chap2感知机

文章目录 2.1 什么是感知机2.2 简单逻辑电路 &2.3 感知机的实现引入偏置与门 And gate与非门(NAND gate)或门 OR gate 2.4 感知机的局限性(单层感知机无法分离非线性空间)2.4.1 异或门2.4.2 线性和非线性 2.5 多层感知机(multi-layered perception)2.5.1 已有门电路的组合2…

Git 工具原理及使用 -- 基本使用

Git 工具原理及使用 – 基本使用 文章目录 Git 工具原理及使用 -- 基本使用1.创建本地仓库2.配置本地仓库3.认识工作区、暂存区、版本库4.添加文件 -- 场景一5.查看.git文件6.添加文件 -- 场景二7.修改文件8.版本回退9.撤销修改**情况一:对于工作区的代码&#xff0…

【哈士奇赠书活动 - 28期】- 〖产品经理就业实战〗

文章目录 ⭐️ 赠书 - 《产品经理就业实战》⭐️ 内容简介⭐️ 作者简介⭐️ 编辑推荐⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - 《产品经理就业实战》 ⭐️ 内容简介 本书专门为想要入行从事产品经理相关工作的零基础就业人员而编写,涵盖了在产品准备阶段、产品开发阶…

TipDM数据挖掘建模平台产品功能特点

TipDM数据挖掘建模平台是可视化、一站式、高性能的数据挖掘与人工智能建模服务平台,致力于为使用者打通从数据接入、数据预处理、模型开发训练、模型评估比较、模型应用部署到模型任务调度的全链路。平台内置丰富的机器学习、深度学习、人工智能算法,可覆…

桥接模式(Bridge)

定义 桥接是一种结构型设计模式,可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,从而能在开发时分别使用。 前言 1. 问题 假如你有一个几何形状(Shape)类, 从它能扩展出两个子类&#xff1a…

2023最强免费的AI生成图像工具其1

Midjourney虽然很强,但是要钱.Stable Diffusion也很强,但是对于小白来说部署起来也是很麻烦。我们整理了一些已经上线了的,可以直接访问和使用的AI生成图像的工具网站集合。 收录到 2023 最强免费AI生成图像工具集合系列https://www.webhub1…

STM32速成笔记—RTC

文章目录 一、RTC简介二、STM32的RTC2.1 主要特性2.2 RTC框图介绍 三、访问后备区域步骤四、RTC配置步骤五、RTC程序配置5.1 RTC结构体定义5.2 RTC初始化函数5.3 设置年月日,时分秒5.4 判断闰年函数5.5 获取当前年月日,时分秒5.6 获取星期几5.7 中断服务…

【②MySQL 】:测试数据准备、SQL语句规范与基本操作

前言 欢迎来到小K的MySQL专栏,本节将为大家准备MySQL测试数据、以及带来SQL语句规范、数据库的基本操作的详细讲解~✨文末送书,小K赠书活动第二期 目录 前言一、准备测试数据二、SQL语句规范三、数据库的基本操作四、总结:文末赠书 一、准备测…

智能应急疏散系统在大型建筑中的的功能与应用

安科瑞 华楠 摘 要:随着经济的不断发展和城市化进程的推进,城市建筑逐渐发展为高层化、大型化和功能综合化,大空间的建筑物增多。为了实现以人为本,坚持可持续发展理念,保证城市建设系统的正常运行,安全防灾系统在建筑中必不可少,而火患是一项重要的防范内容,要不断…

使用RabbitMQ死信队列关闭未支付的订单

一、什么是RabbitMQ死信队列 RabbitMQ死信队列(Dead-Letter Exchange,简称DLX)是一种特殊类型的交换机,用于处理在队列中无法被消费的消息。当消息无法被消费时,它会被转发到死信队列中,以便进一步处理。 …

7-WebApis-1

Web APIs - 1 掌握DOM属性操作,完成元素内容设置,元素属性设置,控制元素样式 DOM简介获取DOM元素操作元素内容操作元素属性定时器-间隔函数综合案例 描述属性/方法效果获取DOM对象document.querySelector()获取指定的第一个元素document.que…

nuxt 设置i18n后多语言文件不会动态更新

nuxt 设置i18n后多语言文件不会动态更新 昨天遇到的一个问题,然后研究了一整天,今天才得到解决 nuxt 设置i18n多语言时多语言文件不会动态更新 我的原始代码如下: {modules: [nuxtjs/i18n,],i18n: {locales: [{code: en,iso: en-US,name:…

构建可靠软件的关键步骤之单元测试

引言:在当今快节奏的软件开发环境中,构建可靠的软件是至关重要的。单元测试作为软件开发过程中的关键步骤之一,能够帮助开发者发现和解决代码中的错误,确保代码的正确性。本文将详细介绍单元测试的概念、重要性以及如何有效地进行…

impala远程连接失败排查

周一开发反馈在本地电脑上连接impala失败,怀疑是服务问题。测试后发现服务正常,故障也恢复了,就没追究,第二天又出现相似的故障。服务依然正常。怀疑是网络问题。联系网络同事排查。telnet通。网络负载也不是很高,搁置…

档案库房温湿度标准及措施【档案八防十防解决方案】

档案馆库房温湿度调控标准及相应的措施方案 档案库房是档案保管的基本条件,档案库房温湿度与保护档案,延长档案寿命有很大关系。 档案库房适宜温湿度标准为:温度14℃—24℃,相对湿度45%一60 一、库房温湿度对档案的影响…

基于Arduino单片机超声波测距仪设计

文章目录 摘 要 1.课程设计任务 1.1课程设计题目 1.2设计的要求 2.设计总体方案 2.1初步设计方案 2.2各个单元电路的设计要求 2.3主要性能指标 2.4总体方案 3.单元模块设计 3.1显示模块 3.2超声波测距模块 3.3蜂鸣器模块 3.4电机模块 3.5 LED二极管模块 4.软件…

【三维编辑】Editing Conditional Radiance Fields 编辑条件辐射场

Editing Conditional Radiance Fields(ICCV 2021) 作者单位:Steven Liu, Xiuming Zhang, Zhoutong Zhang, Richard Zhang MIT, Adobe Research, CMU 代码地址:https://github.com/stevliu/editnerf 文章目录 摘要前言一、相关工作…

避雷器带电监测仪

一、产品特点: 本机采用大屏幕液晶显示,全中文菜单操作,使用简便高精度采样、处理电路,先进的付里叶谐波分析技术,确保数据更加可靠 仪器采用独特的高速磁隔离数字传感器直接采ji输入的电压、电流信号,保证…

HTML 全面入门教程:从基础到高级

目录 一、基本结构和标签1. HTML 文档结构2. 常用标签 二、表单和输入元素1. 表单标签&#xff08;<form>&#xff09;2. 输入元素3.实例 三、样式和布局1. 内联样式2. 内部样式表3. 外部样式表 四、多媒体和嵌入内容1. 图像2. 音频和视频3. 嵌入内容 五、语义化标签语义…