nginx页面优化

news2024/11/8 15:36:14

文章目录

  • nginx页面优化
  • 一.nginx优化
    • 1.版本号
      • 1.1查看版本号
      • 1.2修改版本号
        • 1.2.1修改配置文件
        • 1.2.2修改源码文件,重新编译安装
    • 2.nginx的日志分割
      • 2.1 写日志分割的脚本
      • 2.2给脚本执行权限、执行
      • 2.3创建定时任务可以每个月固定分割一次
    • 3.nginx的页面压缩
      • 3.1配置
      • 3.2验证
    • 4.图片缓存
      • 4.1配置
      • 4.2浏览器页面访问验证
    • 5.连接超时
      • 5.1配置
    • 6.nginx的并发设置
      • 6.1配置
    • 7.防盗链
      • 7.1配置
      • 7.2验证
        • 7.2.1没有none参数验证

nginx页面优化

一.nginx优化

1.版本号

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

1.1查看版本号

#使用本地服务地址查询
curl -I 192.168.198.13
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.3.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

此时F12调出来,F5刷新,如没变化可以清理浏览器缓存再查看,版本号的地方是自己的自定义的

在这里插入图片描述

使用命令查看

在这里插入图片描述

2.nginx的日志分割

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

2.1 写日志分割的脚本

 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 {} \;

2.2给脚本执行权限、执行

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

在这里插入图片描述

2.3创建定时任务可以每个月固定分割一次

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

7.防盗链

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

7.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图片传到当前目录下用于验证

在这里插入图片描述

7.2验证

7.2.1没有none参数验证

在这里插入图片描述

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

将none参数去掉验证效果

在这里插入图片描述

systemctl restart nginx

再次访问就会有返回错误

在这里插入图片描述

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

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

相关文章

第1讲 Camera Sensor Driver课程简介

更多资源: 资源描述在线课程极客笔记在线课程知识星球星球名称:深入浅出Android Camera 星球ID: 17296815Wechat极客笔记圈 课程内容介绍 目标: 课程主要帮助大家理解camera sensor基本概念及原理知识,理解高通camera sensor驱…

前端开发——常用案例分享

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

美one,不想只做李佳琦背后的MCN

文 | 螳螂观察 作者 | 青月 今年618,处在消费提振的关键时期,又面临着行业竞争日趋激烈,各大电商平台都希望能交出一份让市场满意的“期中答卷”,直播不可避免的成为了“兵家必争之地”。 京东请来了罗永浩与“交个朋友”入驻&a…

抖音seo矩阵系统源码|需求文档编译说明(二)

目录 1.抖音seo矩阵系统文档开发流程 2.各平台源码编译方式说明 3.底层技术功能表达式 1.抖音seo矩阵系统文档开发流程 ①产品原型 ②需求文档 ③产品流程图 ④部署方式说明 ⑤完整源码 ⑥源码编译方式说明 ⑦三方框架和SDK使用情况说明和代码位置 ⑧平台操作文档 ⑨程序架…

完美外贸企业邮箱签名设置指南:提升专业形象,优化商务沟通

邮箱签名是一个很好的方式,让您的外贸企业觉得你的公司比较专业。它可以包括公司名称和标志,联系信息和其他相关信息。以下是一些指导原则,可以帮助您创建适合您业务的邮箱签名: 第一步:选择一个合适的Logo 选择一个适合你的企业的标志是很重…

踏响新中国钢铁工业的铿锵足音《淬火丹心》湖北卫视热血开播

由湖北省广播电视局、湖北广播电视台、湖北长江华晟影视有限责任公司等联合摄制,向勇执导,唐曾、吕一、王雨、董晴等主演的大型现代工业题材剧《淬火丹心》,将于6月25日登陆湖北卫视长江剧场开播。该剧以年轻一代中国钢铁人的励志成长为主线&…

排序算法——计数排序

计数排序 以升序排序为例 文章目录 计数排序什么是计数排序实现思路具体步骤实现代码时间复杂度和局限性时间复杂度局限性 什么是计数排序 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出基本思想:是对于给定的输入序列中…

运算放大器(一):电压跟随器

一、电压跟随器 电压跟随器(单位增益放大器、缓冲放大器或隔离放大器)是一种电压放大倍数为 1 的运算放大器,能够将输入信号的电压放大到同样的幅度并输出,同时保持输入输出电阻不变(电压跟随器的输入电阻很大&#x…

Python网络编程:socket包的用法

持续补充 1 网络编程 网络编程,主要用于两台或多台计算机之间的通信,也可以是同一台计算机内不同进程之间的通信。Socket套接字可以用来实现网络通信。关于Socket套接字,需要注意以下几点: Socket是网络通信中应用层和传输层之间…

安装numpy

pip install numpy1.21.6 -i https://mirrors.aliyun.com/pypi/simple/ 最外面的python.exe 是默认版本 下载包----第二种方式

调用有道API实现图片翻译

调用有道API实现图片翻译 1.作者介绍2.关于理论方面的知识介绍3.调用有道API实现图片翻译实验3.1官方代码与结果3.2解码3.3换行输出3.4 示例展示 1.作者介绍 周慧龙,男,西安工程大学电子信息学院&#xff…

心电图机原理及电路超详细讲解

心电图机原理及电路超详细讲解 心电图主要器件导联单极导联和双极导联威尔逊中心端加压导联胸导联 心电图机的结构电路框图介绍输入部分过压保护电路高频滤波电路低压保护及缓冲放大器屏蔽驱动电路导联选择起搏脉冲抑制与定标电路肌电滤波、时间常数电路、封闭电路与电极异常检…

【OC底层_消息发送与转发机制原理】

文章目录 前言动态类型动态绑定为何为动态语言? 什么是消息传递选择子SELIMPIMP和SEL的关系 消息发送1. 快速查找objc_msgSend()的执行流程objc_msgSend()深基核心逻辑及其参数解析源码解析消息发送的快速查找总结:objc_msgSend(receiver, sel, …)对于b…

接口测试Post请求提交数据的四种类型

常见的post提交数据类型有四种: 第一种:application/json 这是最常见的json格式,也是非常友好的深受小伙伴喜欢的一种,如下 {“input1”:“xxx”,“input2”:“ooo”,“remember”:false} 第二种:application/x-www…

【MySQL实战】笔记

1、MySQL的基本架构组成 MySQL的基本架构组成包括以下几个部分: 连接器(Connection Manager):负责与客户端建立连接,并处理客户端发送的请求。连接器会验证客户端的身份、分配线程和缓存等资源,并将请求转…

pdf转excel怎么样格式不乱?这两个方法轻松转换!

PDF和Excel是广泛应用的文件格式,然而,将PDF转换为Excel时,常常面临格式混乱的问题。幸运的是,我们有记灵在线工具和Adobe Acrobat Pro软件这两个简单而有效的方法,可以帮助我们将PDF转换为Excel并保持格式整齐。本文将…

复旦微7045环境安装

Linux Petalinux 0.下载 更换下载源:https://blog.csdn.net/u012308586/article/details/102737950 更换中文:https://cloud.tencent.com/developer/article/2159346 1.配置 配置/bin/sh 由于 petalinux 用到的/bin/sh 命令都是 bash 的&#xff0c…

好用又强大的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点

作为一款强大易用的开源建站工具,配合上不同的模板与插件,可以很好地帮助你构建你心中的理想站点。它可以是你公司的官方网站,可以是你的个人博客,也可以是团队共享的知识库,甚至可以是一个论坛、一个商城。 控制台 控制台是一个 Halo 站点的后台管理系统,只有具有权限…

本周大新闻|visionOS SDK开放下载;Meta和三星停止芯片合作

本周XR大新闻,AR方面,visionOS 1.0系统和SDK发布;Meta和三星停止芯片合作,转而投向联发科;Karl Guttag评Vision Pro第二篇发布;Vision Pro眼球追踪细节。 VR方面,Vision Pro游戏空间边界为3米圆…