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

news2025/1/17 1:29:34

目录

一、理论

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)配置文件

 加入压缩功能参数

配置网页

 

 

 查看图片为已压缩

 

2.网页缓存

(1)配置文件

 

  查看图片缓存失效时间为1天

 

3.连接超时设置

(1)配置文件

 设置超时

 查看连接已设超时

 

4.并发设置

(1)配置文件

 查看CPU内核数:

 修改工作进程核心数:

 

5.隐藏版本信息

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

 查询版本号 

配置文件关闭版本

关闭版本号

查询

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

编辑文件

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

修改版本号及服务器类型

指定安装路径

完成

  编译安装

 启用版本

 查看版本

 

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

 (1)编写日志分割脚本

cd /opt
vim nginxlog.sh

 (2)赋权

(3)执行脚本进行测试

(4)查看日志

(5)计划性任务

7.防盗链

(1)web源主机(192.168.204.200)

配置文件

配置网页

 

 配置主机与IP映射

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

配置文件

 

 配置网页

 

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

 

三、总结

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

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

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

相关文章

神仙打架的618,谁才是真正的大赢家?

618大促已经缓缓落下帷幕,各大平台和品牌方准时准点晒出成绩单。在一串又一串红彤彤的战报中,家电品牌你追我赶的激烈战况一如以往。 我们从中也得以窥见新消费时代下中国家电行业的未来,尤其是在消费者纷纷捂紧钱袋子的今年,红色…

快解析域名映射,通过外网域名来访问内网

在本地搭建主机应用后,由于没有公网IP或没有公网路由权限,在需要发布互联网时,就需要用到外网访问内网的一些方案。由于内网IP在外网不能直接访问,通常就用通过外网域名来访问内网的方法。那么,公网域名如何解析到内网…

无法开启nginx -t等命令的解决办法

在 Windows 下载安装了 Nginx,配置了环境变量全局使用 Nginx。但是仍旧无法开启nginx -t等命令。 原因: Nginx 在使用时 conf-path 是根据相对路径来找的。 匹配的路径是 C:\Users\20210121/conf/nginx.conf ,完全是错的。 解决办法&#x…

Redis进阶 - Redis持久化

原文首更地址,阅读效果更佳! Redis进阶 - Redis持久化 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-advance-persistence.html 单点Redis的问题 数据丢失问题:Redis 是内存存储,服务重启可能会丢失数据。…

基于卷积神经网络的高光谱图像分类

文章目录 引言1. 基于光谱特征2. 基于空间特征3. 基于空谱特征3.1 空间特征和光谱特征的融合3.2 基于3D-CNN分类 4. 总结 引言 近年来深度学习的技术在计算机视觉领域中大放异彩,使得对多光谱数据分类的研究迅速发展,结合2D-CNN,3D-CNN&…

数据结构第六章 图 6.4 错题整理

4.A A. 不是简单路径的话,有环,去环路径会更短 B. 适合的 弗洛伊德算法才不适合 C. 本来就是 D 2X2矩阵拓展到3X3矩阵 再扩大 若是子集 即加入新顶点后,最短路径都没有变,错 5.B 本题用弗洛伊德更合适 但这道题只需全部代入求最…

xml系列篇之xml建模

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于xml的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 是什么 为什么要使用xml建模 怎么使用 1.…

NodeJS Mocha测试⑩④

文章目录 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘前言Mocha 1、编写测试 2、SumJS代码 3、使用内置断言库 4、第三方库 chai断言库 5、第三方库 异步断言 6、http测试 7、钩子函数更多包工具总…

【Linux系统命令】——平均负载分析,以及cpu的性能检测,进程上下文切换分析

目录 1 平均负载 1.1概念 1.2 uptime指令(检测平均负载) 1.3 负载分析 1.4 单核cpu负载分析 1.5 不同时间内的load值分析 1.6 平均负载和cpu使用率的区别 2. 压测命令 2.1 对cpu进行压力测试 2.2 对内存进行压力测试 2.3对磁盘压力测试 2.…

RocketMQ常用操作

RocketMQ历史及发展 如果想要了解RocketMQ的历史,则需了解阿里巴巴中间件团队中的历史 2011年,Linkin(领英:全球知名的职场社交平台)推出Kafka消息引擎,阿里巴巴中间件团队在研究了Kafka的整体机制和架构设计之后,基…

NCI-2

10.5 NFCEE 状态 NFCC 使用此控制消息向 DH 通知启用的 NFCEE 状态的变化。 NFCC 发送 NFCEE_STATUS_NTF 来报告启用的 NFCEE 状态的变化。 对于任何禁用或无响应的 NFCEE,NFCC 不应发送 NFCEE_STATUS_NTF。 当启用 NFCEE 并且 NFCC 检测到与该 NFCEE 通信时存在不…

【图表】echart

文章目录 概述基础概念属性使用简单入门使用柱状图的中间显示数据 来源 概述 ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2…

Power Strings

Power Strings 题面翻译 题意简述: 求一个字符串由多少个重复的子串连接而成。 例如 ababab 由三个 ab 连接而成,abcd 由 abcd 由一个 abcd 连接而成。 输入格式 本题多组数据。 每一组数据仅有一行,这一行仅有一个字符串 s s s。 输…

nmap常用扫描命令

1. nmap扫描一台机器 nmap 192.168.133.672. nmap扫描一台机器,查看打开端口及详细信息 nmap -v 192.168.133.673. nmap 指定端口/端口范围扫描 nmap -p 1-65535 192.168.133.67nmap -p 1-100,135,8080,443 192.168.133.67 <

chatgpt赋能python:Python电脑上图标是什么样子?

Python电脑上图标是什么样子&#xff1f; 在计算机系统中&#xff0c;图标是一种可视化的元素&#xff0c;用于代表具体的应用程序或文件。Python是一种开源的高级编程语言&#xff0c;越来越多的人开始使用它进行软件开发和数据科学。在电脑上&#xff0c;Python的图标是怎样…

简单Web UI 自动化测试框架 seldom

pyse 更名为 seldom WebUI automation testing framework based on Selenium and unittest. 基于 selenium 和 unittest 的 Web UI自动化测试框架。 特点 提供更加简单API编写自动化测试。提供脚手架&#xff0c;快速生成自动化测试项目。自动生成HTML测试报告生成。自带断言方…

3.跑马灯

1.GPIO的输出模式&#xff1a; 推挽模式输出&#xff1a;因为LED0和LED1阳极都是3.3V&#xff0c;需要将阴极设置为低电平才可以点亮LED&#xff1b;操作io口时&#xff0c;必须引入源文件和头文件&#xff1b;关于时钟的文件存放在rcc中&#xff1b; 2.GPIO库函数介绍&#…

【传感器】一种鲁棒的imu比例系数与偏移的校准算法

简介 最近在学习传感器相关的知识&#xff0c;在国外的一篇论文学习过程中&#xff0c;觉得这篇论文的校准方法是个不错的参考。 这种校准简单且比较鲁棒的算法&#xff0c;操作简单&#xff0c;且除了偏移与比例系数&#xff0c;还可以估计出传感器 xyz 轴相对于标准正交三轴…

《Python自动化测试九章经》

Python是当前非常流行的一门编程语言&#xff0c;它除了在人工智能、数据处理、Web开发、网络爬虫等领域得到广泛使用之外&#xff0c;他也非常适合软件测试人员使用&#xff0c;但是&#xff0c;对于刚入行的测试小白来说&#xff0c;并不知道学习Python语言可以用来完成哪些测…

chatgpt赋能python:Python用于炒股

Python用于炒股 随着互联网和数据科学的发展&#xff0c;越来越多的投资者开始依靠计算机和数据科学来进行更高效的投资。Python是一种广泛使用的编程语言&#xff0c;可以帮助投资者更好地处理数据和自动化交易。本文将简要介绍Python如何用于炒股&#xff0c;并分享一些有用…