Web服务器群集:Nginx网页及安全优化

2023-11-03

目录

一、理论

1.Nginx网页优化

2.Nginx安全优化

3.Nginx日志分割

二、实验

1.网页压缩

2.网页缓存

3.连接超时设置

4.并发设置

5.隐藏版本信息

 6.脚本实现每月1号进行日志分割

7.防盗链

三、总结


一、理论

1.Nginx网页优化

(1)概述

在企业中,部署Nginx后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已不适用当今的互联网时代。

为了适应企业需求,就需要考虑如何提升Nginx的性能与稳定性,这就是Nginx优化的内容。

优化内容:

表1 优化内容

分类 优化内容
网页优化 配置网页压缩功能
配置网页缓存
连接超时设置
并发设置
页面安全 配置隐藏版本号
日志分割 日志分割
防盗链 配置防盗链

(2)网页压缩

① gzip介绍

配置Nginx的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器。

作用:

降低了网络传输的字节数,加快网页加载的速度;
节省流量,改善用户的浏览体验;
gzip与搜索引擎的抓取工具具有更好的关系。

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;		#压缩类型,表示哪些网页文档启用压缩功能
...... 
}

  ②   Nginx的压缩模块

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

(3)网页缓存

当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度。
注:一般针对静态网页设置,对动态网页不设置缓存时间。

vim /usr/local/nginx/conf/nginx.conf
http {
......
	server {
	...... 
		location / {
			root html;
			index index.html index.htm;
		}
		
		location ~ \.(gif|jpg|jepg|png|bmp|ico)$ { 		#加入新的 location,以图片作为缓存对象
			root html;
			expires 1d;									#指定缓存时间,1天
		}
......
	}
}

(4)连接超时设置

HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。
KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。
在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间。可以修改配置文件 nginx.conf,设置 keepalive_timeout超时。
 

vim /usr/local/nginx/conf/nginx.conf
 http {
 ...... 
     keepalive_timeout 65 180;       //设置连接超时时间    
     client_header_timeout 80;
     client_body_timeout 80;
 ...... 
 }

(5)并发设置

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

① 查看cpu的核心数:

查看cpu的核心数,根据核心数来设置工作进程数
cat /proc/cpuinfo |grep processor|wc -l
cat /proc/cpuinfo |grep -c processor
cat /proc/cpuinfo | grep -c "physical id"

② 修改工作进程核心数:

修改工作进程核心数 
vim /usr/local/nginx/conf/nginx.conf
worker_processes  1;        #修改为与CPU核数相同
worker_cpu_affinity 01 10;  #设置每个进程由不同cpu处理,进程数配为4时0001 0010 0100 1000

2.Nginx安全优化

(1)防盗链

防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片,文件,视频等相关资源;

如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力;

作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。

Nginx盗链的过程与apache一致,均是通过网页浏览,将网站图片重定向到自己的网站上。

vim /usr/local/nginx/conf/nginx.conf
http {
......
	server {
	......
		location ~* \.(jpg|gif|swf)$ {
			valid_referers none blocked *.david.com jack.com;
			if ( $invalid_referer ) {
				rewrite ^/ http://www.david.com/error.png;
				#return 403;
            }
        }
	......
	}
}

(2)隐藏版本信息

作用:一般情况下,软件的漏洞信息和特定的版本是相关的,因此,软件的版本号对攻击者来说是很有价值的,所以我们隐藏Nginx的版本号,减少受攻击风险,保护服务器安全运行

Nginx隐藏版本号的方法:
① 修改配置文件(隐藏版本号)

vim /usr/local/nginx/conf/nginx.conf
server_tokens off;
##若在http模块中加,为全局设置
##在server模块内加,为当前主机设置

② 修改源码法(修改版本号)

vim /opt/nginx-1.22.0/src/core/nginx.h
#define NGINX_VERSION "1.1.1" 					#修改版本号
#define NGINX_VER "IIS" NGINX_VERSION 			#修改服务器类型

cd /opt/nginx-1.22.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install

vim /usr/local/nginx/conf/nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens on;
	......
}

3.Nginx日志分割

Nginx与apache的不同之处,就是Nginx本身并未设计日志分割工具,所以需要运维人员进行脚本编写来实现日志分割。

日志分割脚本:

#!/bin/bash
day=$(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'
pid_file='/usr/local/nginx/logs/nginx.pid'
if [ ! -d $dir ]
   then mkdir $dir
   fi
mv ${logs_file} ${dir}/access${day}.log
mv ${logs_error} ${dir}/error${day}.log
kill -USR1 $(cat ${pid_file})
find $dir -mtime +30 -exec rm -rf {} \;

二、实验

1.网页压缩

(1)配置文件

9e0bb8081f9d4932a900c95340d12789.png

 加入压缩功能参数

fe5d84f4de8f47878320c18081a2f91c.png

配置网页

3f4e81ebdc854efb9348c8a929fccb7f.png

4b3e879311c447a49320a42738fd9913.png

 查看图片为已压缩

b73aa8f46e124339b0154f2c76d3aafb.png

2.网页缓存

(1)配置文件

286c49c6ecf34210983619337051418a.png

1191f0bfced74bac9330dc88564557f6.png

  查看图片缓存失效时间为1天9584fcf5b5fb443289340fc3b976e59f.png

3.连接超时设置

(1)配置文件

ad61d4dc3a804a559cf1f6d32a8417cd.png

 设置超时

8761b643593d48d5bdac4749a81f8d83.png

 查看连接已设超时4f5961958aeb4807b5e779b6d25f2d0a.png

4.并发设置

(1)配置文件

97612f7be6624decaa297883ff783103.png

 查看CPU内核数:

95c83d31849d4c0eaf8301e05e7b99c0.png

 修改工作进程核心数:

c9d06f9da1794371980f24c5470e31a2.png

5.隐藏版本信息

(1)修改配置文件(隐藏版本号)

 查询版本号 

f6376566174143a6911abaa8501eaa90.png

配置文件关闭版本

0e0ce5d63b494fc095f874be2a3e1817.png

关闭版本号

a1906232d7c44562a79ba4e19d19e1ed.png

查询

82002c8a479b4de69fcbc2acbc9e7a7b.png

 (2)修改源码法(修改版本号)

编辑文件

vim /opt/nginx-1.22.0/src/core/nginx.h

修改版本号及服务器类型

84ea9e6524c64645a810002cd61c5f0f.png

指定安装路径

5d3f53f9b9a94c08b095ce2c0440dd28.png

完成

926148d2ee3c4c949910441aba59b35c.png

  编译安装20b2d825b8a5484186a5c27d357458af.png

 启用版本

65b56b6818f14145b81766a05d0e2499.png

 查看版本

 46082bb9e701465e83582fd79e530187.png

 6.脚本实现每月1号进行日志分割

 (1)编写日志分割脚本

cd /opt
vim nginxlog.sh

0816c1a5a20c420d9f08ae54ffe0b98f.png

 (2)赋权

2cde4a87f60d47cd9b19e33e05d0b136.png

(3)执行脚本进行测试

a78cbd338abd4b3ebb2e1c556baef389.png

(4)查看日志

1b9e4f999f744a92bb05e800fb576692.png

(5)计划性任务

a9f8008ac2834d6e9c43a2968a8aeb90.png

7.防盗链

(1)web源主机(192.168.204.200)

配置文件

76e2f9ad6dff477eb513aaa7a96ae1a7.png

6d2ca8eb050e405996f6e804e27b5cd1.png

配置网页

bd8d3d323fc54c16ada36f2778e28614.png

 c06fa8ac2ea2465d81f02198eae96eb3.png  

配置主机与IP映射

2f80075085144cb28b8b8b670ea9c4d7.png

80d3d285d3044df2bf370fbd7f13e01d.png

 (2)盗链网址主机(192.168.204.150)

配置文件

3fb1966b48c34f1abd6f80c8ef7f63d1.png

 9d94ddd61d014b4ea9c556a57817f739.png

 配置网页

4d04cb4551814a38a7c4dc05166490a5.png

da998cf3e86f4188901b73f9f0aaf728.png

 5f1c911e6cc84578af4fee053a682335.png

 (3)在web源主机查看浏览器

41232058fbc5498c9e2230aa9c0cedb8.png

(4)在盗图网站主机上进行浏览器验证

89d3c22a735c43afb392c89ac59004dd.png

三、总结

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

Nginx网页及安全优化常用方法为网页压缩、网页缓存、连接超时设置、并发设置、防盗链、日志分割和隐藏版本信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web服务器群集:Nginx网页及安全优化 的相关文章

  • 如何利用CHAT做简单的总结体会?

    问CHAT 在测试过程中使用appium python自动化的优点和体会 CHAT回复 使用 Appium 配合 Python 进行自动化测试主要有以下几点优点 1 跨平台性 Appium 支持 iOS 和 Android 平台的应用自动化
  • 【计算机毕业设计】病房管理系统

    当下 如果还依然使用纸质文档来记录并且管理相关信息 可能会出现很多问题 比如原始文件的丢失 因为采用纸质文档 很容易受潮或者怕火 不容易备份 需要花费大量的人员和资金来管理用纸质文档存储的信息 最重要的是数据出现问题寻找起来很麻烦 并且修改
  • 【计算机毕业设计】实验室预约管理

    身处网络时代 随着网络系统体系发展的不断成熟和完善 人们的生活也随之发生了很大的变化 人们在追求较高物质生活的同时 也在想着如何使自身的精神内涵得到提升 而读书就是人们获得精神享受非常重要的途径 为了满足人们随时随地只要有网络就可以看书的要
  • 【计算机毕业设计】出租车管理系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本出租车管理系统就是在这样的大环境下诞生 其可以帮助管理者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人
  • 【计算机毕业设计】基于web的山东红色旅游信息管理系统

    有效的处理想要的相关信息和如何传播有效的信息 一直是人类不断探索的动力 人类文明火种的传承都是通过了多种媒介作为载体 也是随着社会生产力的发展不断的更新 随着互联网的到来 信息传播与管理都上升了一个新的台阶 并且方便应用的同时也要考虑信息传
  • 【计算机毕业设计】北关村基本办公管理系统

    在如今社会上 关于信息上面的处理 没有任何一个企业或者个人会忽视 如何让信息急速传递 并且归档储存查询 采用之前的纸张记录模式已经不符合当前使用要求了 所以 对北关村基本办公信息管理的提升 也为了对北关村基本办公信息进行更好的维护 北关村基
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理

    文章目录 1 什么是DES 2 DES的基本概念 3 DES的加密流程 4 DES算法步骤详解 4 1 初始置换 Initial Permutation IP置换 4 2 加密轮次 4 3 F轮函数 4 3 1 拓展R到48位 4 3 2
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】二手图书交易系统

    随着世界经济信息化 全球化的到来和互联网的飞速发展 推动了各行业的改革 若想达到安全 快捷的目的 就需要拥有信息化的组织和管理模式 建立一套合理 动态的 交互友好的 高效的二手图书交易系统 当前的信息管理存在工作效率低 工作繁杂等问题 基于
  • 【ES6】解构语句中的冒号(:)

    在解构赋值语法中 冒号 的作用是为提取的字段指定一个新的变量名 让我们以示例 const billCode code version route query 来说明 billCode code version 表示从 route query
  • 面试官问,如何在十亿级别用户中检查用户名是否存在?

    面试官问 如何在十亿级别用户中检查用户名是否存在 前言 不知道大家有没有留意过 在使用一些app注册的时候 提示你用户名已经被占用了 需要更换一个 这是如何实现的呢 你可能想这不是很简单吗 去数据库里查一下有没有不就行了吗 那么假如用户数量
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • 30天精通Nodejs--第二十天:express-操作mysql

    目录 前言 安装依赖并配置MySQL连接 安装mysql2库 配置连接信息 在Express应用中使用MySQL 结合Express路由实现CRUD操作 整合到主应用 结语 前言 在Node js中使用Expre
  • ssh:connect to host github.com port 22: Connection timed out

    解决流程 1 将github的端口由22改为443 ssh T p 443 git ssh github com 2 接着输入yes进行确认 The authenticity of host ssh github com 443 192 1
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • GitLab CI 实现项目A更新代码自动触发项目B更新错误码文档

    一 CI CD简介 CI CD 是持续集成 Continuous Integration 和持续交付 持续部署 Continuous Delivery Continuous Deployment 的缩写 是一种软件开发和交付的最佳实践 这两
  • SAP ERP系统是什么?SAP好用吗?

    A公司是一家传统制造企业 公司曾先后使用过数个管理软件系统 但各部门使用的软件都是单独功能 导致企业日常管理中数据流与信息流相对独立 形成了 信息孤岛 随着公司近年业务规模的快速发展以及客户数量的迅速增加 企业原有的信息系统在销售预测及生产
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作

随机推荐

  • day5笔记

    10 删除目录 删除空目录 rmdir 路径 目录名 示例 rmdir day1 11 创建文件 touch 路径 文件名 示例 touch 1 c touch 2 c day2 2 txt 12 删除文件 rm 路径
  • Springboot

    Spring Boot能快速创建出生产级别的Spring应用 使spring开发变得简单 无需编写各种配置 Spring Boot是整合Spring技术栈的一站式框架 Spring Boot是简化Spring技术栈的快速开发脚手架 Spri
  • Docker容器与虚拟化技术:Harbor私有仓库部署与迁移

    目录 一 理论 1 本地私有仓库 2 Harbor 二 实验 1 Docker搭建本地私有仓库 2 docker compose部署及配置 3 harbor部署及配置 4 登录创建项目 5 在其他客户端上传镜像 6 harbor维护 7 移
  • Spark 系列教程(2)运行模式介绍

    Spark 运行模式 Apache Spark 是用于大规模数据处理的统一分析引擎 它提供了 Java Scala Python 和 R 语言的高级 API 以及一个支持通用的执行图计算的优化引擎 Spark Core 是 Spark 的核
  • 【AI思维空间】ChatGPT纵横编程世界,点亮智慧火花

    作者 京东零售 王英杰 概述 该文档记录云交易开发小伙伴儿们在开发过程中的实际应用案例 记录典型案例 以解决开发过程中的实际问题为主 涵盖设计方案 编码 测试 集成 部署等等 目的 贡献最佳实践 分享心得 共同成长 1 怎样构造Prompt
  • chatgpt赋能python:Python多行连一行:简便省事的代码优化方法

    Python多行连一行 简便省事的代码优化方法 在Python编程中 经常会遇到多行代码的情况 这不仅降低了代码的可读性 也增加了调试的难度 为了解决这个问题 Python提供了多行连一行 以反斜杠 结尾 的语法 以便将多行代码转化为单行代
  • 动态规划学习

    动态规划 动态规划简介 什么是动态规划 动态规划和递归区别 动态规划和分治区别 动态规划解决步骤 动态规划类别 1 坐标型动态规划 2 位操作型动态规划 3 背包型动态规划 动态规划简介 什么是动态规划 动态规划是运筹学中用于求解决策过程中
  • python已知两边求第三边_已知两边求第三边公式

    如果是三角形是直角三角形 知道两边 可以用勾股定理求出第三边 如果是三角形是普通三角形 锐角 钝角三角形 那这个条件下只能求出第三边的范围 两边之和大于第三边 两边之差小于第三边 求边公式 只知道两边相等如果一个是底边一个是腰的话 这个是正
  • 数学建模写作与排版

    1 2 数学建模 快速入门 上 1 3 数学建模 快速入门 下 写作部分 首页 论文标题 摘要 关键词 一 问题重述 二 问题分析 三 模型假设 四 符号说明 五 模型的建立与求解 六 模型的分析与检验 七 模型的评价 改进和推广 八 参考
  • NFS环境搭建

    NAT模式下 安装NFS sudo apt install nfs kernel server 重启NFS服务器 sudo etc init d nfs kernel server restart 修改配置文件 etc exports 在里
  • 灰色关联分析法

    与灰色预测模型一样 比赛不能优先使用 灰色关联往往可以与层次分析结合使用 层次分析用在确定权重上面 1 确定比较对象 评价对象 就是数据 并且需要进行规范化处理 就是标准化处理 见下面例题的表格数据 和参考数列 评价标准 一般该列数列都是1
  • windows下能搭建php-fpm吗 phpstudy

    这个Windows和Linux系统是不一样的 因为一般nginx搭配php需要php fpm中间件 但是Windows下需要第三方编译 下载的包里有php cgi exe 但不是php fpm如果想在windows上跑php fpm 据说可
  • 【ES】分布式集群

    ES 分布式集群 单节点集群 故障转移 水平扩容 应对故障 路由计算 本文主要参考尚硅谷的资料 少部分自己原创 有错误之处请指出 单节点集群 node 1001配置如下 集群名称 节点之间要保持一致 cluster name my elas
  • C++ PCL库实现最远点采样算法

    最远点采样 Farthest Point Sampling 简称FPS 是点云处理领域中的一种重要算法 用于对点云数据进行快速降采样 最早的最远点采样算法应该是在计算机图形学领域中提出的 用于在三维模型上进行表面重建 随着点云处理技术的发展
  • HDU--1200:To and Fro (字符串)

    1 题目源地址 http acm hdu edu cn showproblem php pid 1200 2 解题代码 include
  • 服务器远程使用什么协议,云服务器远程是什么协议

    云服务器远程是什么协议 内容精选 换一换 弹性云服务器 Elastic Cloud Server 是一种可随时自动获取 计算能力可弹性伸缩的云服务器 可帮助您打造可靠 安全 灵活 高效的应用环境 确保服务持久稳定运行 提升运维效率 WinS
  • Jira 史诗指南 (2022)

    Jira 就是为了完成工作 而 Epics 是实现该目标的一种有价值的方式 一般来说 Epics 适用于顾名思义 不会在一天内完成但会 的工作 史诗 在本指南中 我们将分解什么是 Epics 它们的用途 以及它们的用途 以及如何创建和使用它
  • Qt 应用程序显示页面的方法

    1 在qt窗口中显示页面 1 pro中添加 QT webkitwidgets 2 添加头文件 include
  • Swift4.0 guard,Array,Dictionary

    guard的使用 guard是Swift新增语法 guard语句必须带有else语句当条件表达式为true时候跳过else语句中的内容 执行语句组内容 条件表达式为false时候执行else语句中的内容 跳转语句一般是return brea
  • Web服务器群集:Nginx网页及安全优化

    目录 一 理论 1 Nginx网页优化 2 Nginx安全优化 3 Nginx日志分割 二 实验 1 网页压缩 2 网页缓存 3 连接超时设置 4 并发设置 5 隐藏版本信息 6 脚本实现每月1号进行日志分割 7 防盗链 三 总结 一 理论