linux系统Nginx服务页面优化

news2024/11/16 8:30:55

文章目录

  • 一、Nginx服务优化
    • 1.隐藏版本号
    • 2.日志分割
    • 3.设置页面压缩
    • 4.配置网页缓存时间
    • 5.设置连接超时
    • 6.Nginx并发设置优化(更改进程数)
    • 7.修改用户与组
    • 8.配置防盗链
  • 总结


一、Nginx服务优化

1.隐藏版本号

隐藏Nginx版本号,以避免泄露Nginx的版本,使攻击者不能针对特定的版本进行攻击。
1、查看Nginx版本的命令curl,在centos中使用curl -I http://192.168.40.103查看版本号。
在这里插入图片描述
2、隐藏Nginx版本号有两种方式:第一种是修改Nginx源码文件,指定不显示版本号,第二种是修改Nginx的主配置文件。
(1)修改Nginx主配置文件
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
(2)修改Nginx源码文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后编译安装,才可以隐藏版本信息。

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

2.日志分割

nginx本身不带日志分割工具,所有在工作当中,所有的nginx的日志分割,都是以shell脚本的形式来实现日志的分割。
(1)vim /opt/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)设定定时任务,定期执行脚本自动进行日志分割。
在这里插入图片描述
在这里插入图片描述

3.设置页面压缩

Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能,允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装可在配置文件中加入相应的压缩功能参数对压缩性能进行优化。
gzip on:开启gzip压缩输出,

gzip_min_length 1k:用于设置允许压缩的页面最小字节数。
gzip_buffers 4 64k:压缩的缓冲区,4个64k缓冲区。
gzip_http_version 1.1:压缩版本,默认1.1。
gzip_comp_level 6:压缩级别1-9,6不大不小,不快不慢,正好。
gzip_vary on:支持前端缓存服务器的压缩功能打开。

gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;
支持压缩的类型文本、xml、图片都可以压缩。
在这里插入图片描述

4.配置网页缓存时间

页面缓存时间:避免重复访问,导致访问速度变慢,加快访问的时间,主要针对静态页面,动态页面不设置缓存时间。
修改Nginx的配置文件,在新local段加入expires参数,指定缓存的时间。

/usr/local/nginx/conf/nginx.conf #修改配置文件

        location ~* \.(gif|jpg|jepg|bmp|ico)$ { #添加新的location段加入expires参数,指定缓存>时间。
                      root html;
                      expires 1d;   #添加缓存时间为1d;
        }
 保存退出!重启服务器。

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

5.设置连接超时

连接超时:避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现对连接访问时间的控制。
设置keepalive_timeout超时时间。
keepalive:缓存记录时间。

vim /usr/local/nginx/conf/nginx.conf #修改配置文件
    #keepalive_timeout  0;
    keepalive_timeout  60;  #指定的TCP连接最多65秒。Nginx默认为65秒,一般浏览器设为60秒。
    client_header_timeout 60; #请求头的超时时间,没有在60秒内发送完整的请求头,nginx返回408,
请求超时;
    client_body_timeout 60; #请求体超时,没有在60秒内向web服务器请求,发送任何内容,nginx返回
408,请求超时。
systemctl restart nginx #重启服务

在这里插入图片描述

6.Nginx并发设置优化(更改进程数)

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

[root@localhost opt]# vim /usr/local/nginx/conf/nginx.conf   #修改配置文件

#user  nobody;
worker_processes  2;  #指定内核数
worker_cpu_affinity 01 10;  #指定工作的内核编号。

[root@localhost opt]# 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
[root@localhost opt]# systemctl restart nginx  #重启服务

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

7.修改用户与组

Nginx运行时进程需要有用户与组的支持,用以实现对网站文件读取时进行访问控制。主进程有root创建,子进程由指定的用户与组创建。Nginx默认使用nobody用户账号与组账号,需要修改为/sbin/nologin。

[root@localhost opt]# vim /usr/local/nginx/conf/nginx.conf  #修改配置文件
user nginx nginx;   #取消注释,修改用户为 nginx ,组为 nginx
worker_processes  2;
worker_cpu_affinity 01 10;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;
systemctl restart nginx   #重启服务

在这里插入图片描述

8.配置防盗链

设置防盗链是为了避免网站内容被非法盗用,造成经济损失,也避免不必要的宽带浪费。

        location ~* \.(jpg|gif|swf)$ {
            valid_referers none blocked *.kgc.com kgc.com;
            if ( $invalid_referer ) {
               rewrite ^/ http://www.kgc.com/error.png;
               #return 430;
              }

访问www.kgc.com
在这里插入图片描述
访问www.benet.com
在这里插入图片描述

总结

Nginx服务优化包括隐藏版本号、更改用户与组、配置网页缓存时间、日志分割、设置连接超时、更改进程数、配置网页压缩、配置防盗链。

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

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

相关文章

使用QFIL刷机步骤

目录 0.注意 1.确认是否出现端口 2. 使用abd命令开启下载端口 3.选择生成类型 4.配置为UFS 5.选择文件 6.加载文件 7.点击Download下载 0.注意 连接手机与电脑时需要手机是开机状态,否则连接不上 操作过程中不能对手机进行任何操作 若操作中未选择&#xff1a…

Python巧解数字变换问题,有点意思(65)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 和猫妹学Python,一起趣味学编程。 今日主题 如何用Python解决数字变换问题 比如: 对于一对正整数a和b,对a只能进行加1,减1…

chatgpt赋能python:Python计算器编程:从入门到精通

Python计算器编程:从入门到精通 随着计算机技术的不断发展,计算器已经成为了我们日常生活中必不可少的工具。Python是一种简单易学的编程语言,也是一种十分适合编写计算器程序的语言。 为什么选择Python编写计算器程序? Python…

网络安全合规-ISO 27701

ISO 27701是什么? 是ISO 27001和 ISO 27002的扩展内容,对建立、实施、维护和持续改进隐私信息管理系统(PIMS)的各项要求做出了规定,是首部针对隐私信息管理的国际标准。该标准概述了适用于个人可识别信息控制者和处理者…

Cesium中,在shader里访问顶点法向

在shader中访问顶点法相 前提条件:使用cesium内部的geometry,非自定义的geometry,比如BoxGeometry。 构造Geometry时,需要指定vertexFormat里面包含NORMAL,这样在构造Geometry时,Cesium会自动生成顶点法向。在默认情况…

idea打的包字符集为GBK

1.最近对接一个打印机厂家的机器,他们对与打印数据要求字符集是UTF-8的,做完程序在自己idea上运行是是能够打印的,但是打包后,就不能够打印了。然后问了设备方是否是他们机器的原因,后面他们问了我这报错码&#xff0c…

CSS选择器总结

作者:爱塔居 专栏:JavaEE​​​​​ 作者简介:大三学生,希望和大家一起进步! 文章目录 文章目录 一、CSS选择器的概念 二、基础选择器 2.1 标签选择器 2.2 类选择器 2.3 id选择器 2.3 通配符选择器 三、复合选择器 3.1…

【mysql环境】mysql的多种安装方法、环境配置总结

目录 第一步:mysql安装方法 方法一: 方法二: 方法三: 第二步:配置环境变量 第三步:验证是否配置成功 第一步:mysql安装方法 方法一: 下载MSI安装程序,进行mysql的…

解决多ffmpeg环境冲突问题

解决多ffmpeg环境冲突问题 问题描述: 使用make安装了ffmpeg-5.1,安装目录目录位于/usr/loacl/ffmpeg,但是使用ffmpeg -version命令出来的版本是4.3,如下图所示: 解决方案: 可以使用以下命令来确定正在…

redis源码之:扩容后的dictScan遍历顺序与JDK的concurrentHashMap 扩容机制

进入正题前,先来复习下关于2次幂的mod运算 设n为2次幂,数a mod n 等价于 a & n-1 从二进制来看,相当于余数为a省去n最高位左侧的所有位(含最高位),保留n右侧所有低位即为余数 如:a 7(0000_0111),n4(0000_0100),通…

Linux挂载详解

Linux 系统中“一切皆文件”,所有文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。 因此产生的问题是,当在 Linux 系统中使…

高考完,报了个嵌入式专业~~

正文 大家好,我是bug菌~ 最近高考成绩陆续公布,也是看到了一家欢喜一家忧心,确实像我们在外面打拼过的这群人,就深有体会:"高考确实是人生的一道分水岭"。 不过今天这里主要是介绍一下嵌入式行业相关的一些专业学校&…

一文掌握设计模式(定义+UML类图+应用)

一、引子 从学编程一开始就被告知,要想做一名优秀的程序员两大必要技能:1.源码阅读(JDK、C等底层语言封装) 2.设计模式(使用某种语言优雅的落地典型场景功能)。一般随着工作年限的增长,被迫对底层语言/框架源码阅读的越来愈多,但是…

软件的演练场景编排的主要作用是什么?

在软件开发过程中,演练场景编排是一种重要的方法,旨在提供一个模拟真实环境的平台,帮助开发团队和用户测试和验证软件的功能、性能和适应性,那软件的演练场景编排的主要作用是什么? 软件演练场景编排是指通过创建特定的…

【Vue2.0源码学习】实例方法篇-数据相关方法

文章目录 0. 前言1. vm.$watch1.1 用法回顾1.2 内部原理 2. vm.$set2.1 用法回顾2.2 内部原理 3. vm.$delete3.1 用法回顾3.2 内部原理 0. 前言 与数据相关的实例方法有 3 个,分别是vm.$set、vm.$delete和vm.$watch。它们是在stateMixin函数中挂载到Vue原型上的&am…

MMDeploy SDK使用记录(ncnn)

参考:mmpose/projects/rtmpose at main open-mmlab/mmpose GitHub MMDeploy 提供了一系列工具,帮助我们更轻松的将 OpenMMLab 下的算法部署到各种设备与平台上。目前,MMDeploy 可以把 PyTorch 模型转换为 ONNX、TorchScript 等和设备无关的…

RabbitMQ 能保证消息可靠性吗

系列文章目录 消息队列选型——为什么选择RabbitMQ RabbitMQ 五种消息模型 RabbitMQ 能保证消息可靠性吗 系列文章目录前言一、消息可靠性的定义二、几种不可靠的场景三、防意外丢失1. 消息持久化2. 队列持久化3. 发布确认3.1 简单发布确认3.2 批量发布确认3.3 异步发布确认 4…

Vector - CAPL - CAPL入门 - 01

前面已经介绍了很多CAPL相关的函数极其应用,今天CAPL能够完成的功能来介绍在车载网络测试中都能够帮助测试工程师完成哪些工作?让我们对它有一个最基础的认识。 CAPL在总线中的应用 > 分析特定消息或特定数据 > 分析数据流量 > 创建和修改工具…

智慧班牌系统源码,相关技术:springboot,elmentui ,Quartz,jpa,jwt

电子班牌系统的主要功能包括:班级管理、学生信息管理、教师管理、课程管理、作业管理、考试管理、公告管理、评价管理、学校消息发布等。在班级管理方面,该系统可以实现教师对班级的整体管理以及学生个人信息的管理,包括个人信息、考试成绩、…

【Java】Java核心 72:XML (上)

文章目录 1 XML概述什么是XMLXML作用 2 编写第1个XML文件需求效果步骤 3 XML的组成:声明和元素XML组成文档声明元素(标签、标记) 4 XML的组成:属性、注释和转义字符属性的语法注释转义字符[实体字符]小结 1 XML概述 什么是XML 英…