Nginx 的优化与防盗链设置

Nginx的优化

隐藏版本号

暴露版本号,攻击者就可以根据版本漏洞进行攻击。

查看版本号的方法:

curl -I http://192.168.110.60

网页访问F12查看源代码

隐藏版本号的方法

方法一、修改配置文件

添加关闭版本号

vim /usr/local/nginx/conf/nginx.conf

server_tokens off;

检查配置文件

nginx -t

重启服务

systemctl restart nginx

查看版本号

http://192.168.110.60

网页访问F12查看源代码

方法二、修改源码文件,重新编译安装

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

cd /opt/nginx-1.26.2/

nginx -V(显示 Nginx 的版本信息以及编译时包含的配置参数)

./configure 编译

编译安装

make -j 2 && make install

查看版本号

curl -I http://192.168.110.60

网页访问F12查看源代码

修改用户与组

nginx的默认用户是nobody,修改默认用户便于管理。

vim /usr/local/nginx/conf/nginx.conf

user nginx nginx;

systemctl restart nginx

ps aux | grep nginx

修改缓存时间

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

一般针对静态网页设置,对动态网页不设置缓存时间。

vim /usr/local/nginx/conf/nginx.conf

添加新的 location,以图片作为缓存对象,指定缓存时间为1天

location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {
            root html;
            expires 1d;
}

systemctl restart nginx

创建一个测试页面

<html>
<body>
<img src="river.png"/>
</body>
</html>

网页访问F12查看源代码

设置nginx日志切割

日志切割有力于发现故障时排障。

写一个日志切割的shell脚本

vim nginx_log.sh

#!/bin/bash

YESTERDAY=$(date -d "-1 day" "+%Y%m%d")
LOGPATH="/opt/log/nginx"
PIDPATH="/usr/local/nginx/logs/nginx.pid"


if [ !-d $L0GPATH ];then
mkdir -p $LOGPATH
fi


mv /usr/local/nginx/logs/access.log ${LOGPATH}/access.log-$YESTERDAY
mv /usr/local/nginx/logs/error.log ${LOGPATH}/error.log-$YESTERDAY


kill -USR1 $(cat $PIDPATH)


find $L0GPATH -mtime +90 -delete
 

chmod +x /opt/nginx_log.sh

./nginx_log.sh

查看运行结果

设置周期任务

crontab -e

0 1 * * * /opt/nginx_log.sh

设置连接超时

HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。

若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。

KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。

vim /usr/local/nginx/conf/nginx.conf

keepalive_timeout 60 50;       ----连接保持超时时间,服务端60s,客户端50s
keepalive_requests  100;       ----连接保持最大请求次数
client_header_timeout  15;     ----客户端向服务端发送一个完整的 request header 的超时时间。
client_body_timeout     15;     ----指定客户端与服务端建立连接后发送 request body 的超时时间。

nginx -t

systemctl restart nginx

网页访问F12查看源代码

更改进程数

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

查看cpu核数(默认为1)

cat /proc/cpuinfo | grep -c "physical id"

查看nginx主进程中包含几个子进程

ps aux | grep nginx

vim /usr/local/nginx/conf/nginx.conf

worker_processes  auto;(设置为CPU总核数)
worker_cpu_affinity 0001 0010 0100 1000;(设置每个进程由不同cpu处理)

nginx -t

systemctl restart nginx

查看修改

ps aux | grep nginx

配置网页压缩

ngx_http_gzip_module是Nginx提供对文件压缩功能的模块。

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

vim /usr/local/nginx/conf/nginx.conf

gzip on;                                ----取消注释,开启gzip压缩功能
gzip_min_length 1k;             ----最小压缩文件大小,小于设置值的文件将不会压缩
gzip_buffers 4 16k;               ----压缩缓冲区,这里设置以16k为单位,按照原始数据大小以16k为单位的4倍申请内存
gzip_http_version 1.1;          ----用于识别HTTP协议版本
gzip_comp_level 5;              ----压缩比率,压缩比例由低到高从1到9,默认为1,在生产环境中一般设置该参数的值在3~5之间,最好不要超过5
gzip_vary on;                        ----支持前端缓存服务器存储压缩页面
gzip_disable "MSIE [1-6]\.";  ----配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_types text/plain text/javascript text/css text/xml application/x-javascript application/xml application/x-httpd-php application/javascript application/json;    ----压缩类型,表示哪些网页文档启用压缩功能

实现网页图片的大小压缩

http_image_filter_module是Nginx提供的集成图片处理模块,可以用于实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息。

yum在线源安装gd-devel,http_image_filter_module模块需要依赖gd-devel的支持。

yum install -y gd-devel

重新配置,编译安装nginx

cd /opt/nginx-1.26.2/

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_image_filter_module

make && make install

编辑配置文件

vim /usr/local/nginx/conf/nginx.conf

gzip on;
gzip_types text/plain .... image/jpeg image/gif image/png;

location ~* \.(jpg|gif|png)$ {
image_filter resize 200 200;
}

nginx -t

systemctl restart nginx

网页访问F12查看源代码

Nginx的Gzip压缩功能虽然好用,但是下面两类文件资源不太建议启用此压缩功能。
1)图片/视频类型资源 原因:图片如jpg、png文件本身就会有压缩,所以就算开启gzip后,压缩前和压缩后大小没有多大区别,所以开启了反而会白白的浪费资源。
2)大文件资源 原因:会消耗大量的cpu资源,且不一定有明显的效果。

配置防盗链

源网站图片

盗链网站

访问盗链网站是图片是源网站的占用源网站的资源

设置防盗链

vim /usr/local/nginx/conf/nginx.conf


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

nginx -t

systemctl restart nginx

网页访问

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

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

相关文章

构建高效企业客户管理系统:SpringBoot应用

1 绪论 1.1研究背景 随着网络不断的普及发展&#xff0c;企业客户管理系统依靠网络技术的支持得到了快速的发展&#xff0c;首先要从员工的实际需求出发&#xff0c;通过了解员工的需求开发出具有针对性的首页、个人中心、员工管理、客户信息管理、行业类型管理、项目信息管理、…

心觉:早上醒来是先冥想还是先洗漱,如何提高冥想的质量

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作179/1000天 很多人在学习冥想的时候会有一个疑惑&#xff1f; 都知道在半睡半醒的状态下冥想效果最好 那么早上醒来之后&#xf…

【全新课程】正点原子《ESP32物联网项目实战》培训课程上线!

正点原子《ESP32物联网项目实战》全新培训课程上线啦&#xff01;正点原子工程师手把手教你学&#xff01;通过多个项目实战&#xff0c;掌握ESP32物联网项目的开发&#xff01; 一、课程介绍 本课程围绕物联网实战项目展开教学&#xff0c;内容循序渐进&#xff0c;涵盖了环…

人工智能在医疗健康领域的应用与展望

随着技术的发展&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;正逐渐渗透到各行各业之中&#xff0c;其中医疗健康领域因其对人类福祉的重要性而备受关注。AI技术的应用不仅能够提高医疗服务的质量和效率&#xff0c;还能促进医学研究的进步&#x…

<刷题笔记> 二叉搜索树与双向链表注意事项

二叉搜索树与双向链表_牛客题霸_牛客网 (nowcoder.com) 根据题意&#xff0c;我们需要将搜索二叉树转换成有序的形式。 重点一&#xff1a;BST的中序遍历一定是有序的 因此&#xff0c;此题无论如何都需要使用中序。 又因为要求原地算法&#xff0c;所以&#xff1a; 重点二&a…

ChatGPT 提取文档内容,高效制作PPT、论文

随着人工智能生成内容&#xff08;AIGC&#xff09;的快速发展&#xff0c;利用先进的技术工具如 ChatGPT 的 RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09;模式&#xff0c;可以显著提升文档内容提取和内容创作的效率。以下将详细介绍如…

Windows内核编程基础(1)

在前面的文章中&#xff0c;介绍了如何配置开发环境以及如何进行调试。 接下来的几篇文章&#xff0c;将会重点介绍内核编程中所需要了解的一些理论基础。 我写这个系列文章的主要目的是方便以后自己查阅&#xff0c;同时也给正在学习内核开发的小伙伴一些参考&#xff0c;所…

seaCMS v12.9代码审计学习(上半)

文章目录 CMS介绍环境搭建代码总览漏洞复现/js/player/dmplayer/player/index.php 反射性xss(详见https://github.com/HuaQiPro/seacms/issues/28)admin_ping.php 代码执行漏洞太多了&#xff0c;整理完了下半部分一次性写完 CMS介绍 海洋cms是一款经典的开源影视建站系统&…

召回05 矩阵补充、最近邻查找

matrix completion 上述矩阵补充模型&#xff1a; 基于embadding做推荐&#xff0c;输入用户和物品id&#xff0c;输出一个实数&#xff0c;即用户对物品兴趣的预估值。把id映射到一个向量a,是对用户的表征&#xff0c;embadding层是一个矩阵&#xff0c;a是矩阵的一列&#x…

Dify部署及初步测试

文章目录 Dify安装Dify启动模型接入模型测试 Dify安装 根据Docker Compose 部署中的相关指引&#xff0c;完成以下步骤 git clone https://github.com/langgenius/dify.git cd dify/docker cp .env.example .env docker compose up -d查看容器状态&#xff1a;docker compose…

408选择题笔记|自用|随笔记录

文章目录 B树&#xff1a;访问节点建堆&#xff01;将结点插入空堆广义指令求每个子网可容纳的主机数量虚拟内存的实现方式文件目录项FCB和文件安全性管理级别索引文件三种存取方式及适用器件成组分解访问磁盘次数 C语言标识符 最小帧长物理传输层介质 局域网&广域网考点总…

【全新课程】正点原子《基于GD32 ARM32单片机项目实战入门》培训课程上线!

正点原子《ESP32物联网项目实战》全新培训课程上线啦&#xff01;正点原子工程师手把手教你学&#xff01;彻底解决ARM32单片机项目入门难的问题&#xff01; 一、课程介绍 本课程专为ARM32单片机的入门学习者设计&#xff0c;涵盖了环境搭建、编程软件使用、模块基础驱动和多…

Vue3 + ElementPlus 的后台菜单指引

文章目录 需求实现思路 需求 实现思路 引导页用 Drive.js 基本的使用操作这里写了一些菜单使用 ElementPlus 的组件&#xff0c;可以调用组件中暴露的这个方法&#xff0c;具体使用方法在这里说明 二者结合一下&#xff0c;就可以有这样的效果了

10.软件工程知识详解上

软件工程概述 软件开发生命周期 软件定义时期&#xff1a;包括可行性研究和详细需求分析过程&#xff0c;任务是确定软件开发工程必须完成的总目标&#xff0c;具体可分成问题定义、可行性研究、需求分析等。软件开发时期&#xff1a;就是软件的设计与实现&#xff0c;可分成…

MySQL—触发器详解

基本介绍 触发器是与表有关的数据库对象&#xff0c;在 INSERT、UPDATE、DELETE 操作之前或之后触发并执行触发器中定义的 SQL 语句。 触发器的这种特性可以协助应用在数据库端确保数据的完整性、日志记录、数据校验等操作。 使用别名 NEW 和 OLD 来引用触发器中发生变化的记…

水电站/水库大坝安全监测系统完整解决方案

一、背景 在当今社会&#xff0c;随着全球对清洁能源需求的日益增长&#xff0c;水电站作为可再生能源的重要组成部分&#xff0c;其安全稳定运行显得尤为重要。水电站&#xff0c;尤其是大型水库大坝&#xff0c;不仅承载着发电、防洪、灌溉等多重功能&#xff0c;还直接关系…

后端回写前端日期格式化

问题 不进行格式化处理&#xff0c;就会导致传递的字符串很奇怪 解决方案 注解&#xff08;字段&#xff09; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</…

pandas外文文档快速入门

pandas资源可以在github中进行查询 特点&#xff1a; 1、基于numpy库进行开发 2、主要处理一维、二维的数据 3、可以处理sql&#xff0c;execl&#xff0c;时间表等复杂数据结构 导言 创建一维、二维表 创建的表格其实会和二维表很像 假设我们存储一些数据 其中&#xf…

2024年流动式起重机司机证考试题库及流动式起重机司机试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证考试题库及流动式起重机司机试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试…

单周涨粉过万,这3种AI绘画风格也太火了!

今天给大家分享小红书平台的一些爆款AI绘画类型&#xff0c;如果想要通过AI绘画赚钱或者想要快速起号一定要看&#xff01; 当然&#xff0c;除了小红书平台也可以发一些到其他自媒体平台上&#xff0c;变现方式有很多&#xff0c;可以开店铺卖壁纸、提示词、头像、接定制、合…