Nginx的优化,安全与防盗链

news2025/2/27 17:34:13

1.Nginx的页面优化

1.1 Nginx的网页压缩 

 在Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能。进行相关的配置修改,就能实现Nginx页面的压缩,达到节约带宽,提升用户访问速度

vim /usr/local/nginx/conf/nginx.conf
http {
..........
gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 64k;
    gzip_http_version 1.1; 
    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;
}

 重启服务,进行访问测试:

 

 压缩已经生成 (accept- Encoding)

1.2  配置Nginx的图片缓存 

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

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

vim /usr/local/nginx/conf/nginx.conf
http {
.................
 location ~* \.(gif|jpg|jepg|bmp|ico)$ {
             root html;
             expires 1d;             
         }
}

重启服务,测试访问: 

 

 1.3  Nginx的连接超时设置

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;
 ...... 
 }

keepalive_timeout
指定KeepAlive的超时时间(timeout)。指定每个TCP连接最多可以保持多长时间,服务器将会在这个时间后关闭连接。 Nginx的默认值是65秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为0,就禁止了keepalive 连接。
第二个参数(可选的)指定了在响应头Keep-Alive:timeout=time中的time值。这个头能够让一些浏览器主动关闭连接,这样服务器就不必去关闭连接了。没有这个参数,Nginx 不会发送 Keep-Alive 响应头。

client_header_timeout
客户端向服务端发送一个完整的 request header 的超时时间。如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。

client_body_timeout
指定客户端与服务端建立连接后发送 request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)。

 重启服务,访问测试:

1.4 Nginx的并发设置

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

 查看cpu的核心数,根据核心数来设置工作进程数

cat /proc/cpuinfo |grep processor|wc -l

lscpu

修改工作进程核心数 :

通过PS AUX查看修改前的工作进程只有1个,因为配置文件里面就是一个

im /usr/local/nginx/conf/nginx.conf
 worker_processes  4;        #修改为与CPU核数相同或者两倍
 worker_cpu_affinity 0001 0010 0100 1000;

#将每个worker子进程与特定CPU物理核心绑定,优势在于,避免同一个worker子进程在不同的CPU核心上切换,缓存失效,降低性能。

重启服务 systemctl restart nginx,  work进程变成了4个

2.Nginx的页面安全

——隐藏Nginx的版本号  

2.1 查看Nginx版本的方式

方式一:curl模拟访问获取
[root@localhost ~]#curl -I 192.168.50.22

 

方式二:浏览器访问查看 
 火狐访问浏览器 ,F12查看网络信息

2.2 隐藏版本号 

 方法一:修改配置文件,关闭版本号 

vim /usr/local/nginx/conf/nginx.conf
 http {
     include       mime.types;
     default_type  application/octet-stream;
     server_tokens off;      #添加这一行,关闭版本号
     ......
 }

 

 测试结果:

 方法二:修改源码文件中的版本号,重新编译安装

cd /opt/nginx-1.12.0/src/core/
#修改前进行备份
cp nginx.h  nginx.h.bak
 
vim nginx.h
 
#define NGINX_VERSION      "1.12.0"
#define NGINX_VER          "nginx/" NGINX_VERSION

 修改完配置后切换到Nginx软件包中,进行重新编译安装 


cd /opt/nginx-1.22.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
 
make -J 2 && 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本身并为设计日志分割工具,所以需要运维人员进行脚本编写来实现日志分割

编写日志分割脚本

cd /opt
vim cutlogs.sh
 
 
 
#!/bin/bash
 
#nginx 分割日志脚本
#用变量day获取前天日期的时间记录
day=$(date -d "-1 day" "+%Y%m%d")
#获取日志的目录
logs_path="/var/log/nginx"
#获取运行时nginx的进程号
pid_path="/usr/local/nginx/logs/nginx.pid"
#二元表达式,如果前面不成立则执行后面的式子
#前面判断该目录是否存在,后面则表示不存在则自动创建该目录
[ -d $logs_path ] || mkdir -p $logs_path
#将生成的日志按照date生成的时间格式改名并移动到指定的路径中保存
mv /usr/local/nginx/logs/access.log ${logs_path}/access.log-$day
#重新生成一个新的日志
kill -USR1 $(cat $pid_path)
#日志文件清理,将30天前的日志进行清除
find $logs_path -mtime +30 -exec rm -rf {} \ ;

2. 执行脚本进行测试

 3. 将日志脚本添加至计划性任务


[root@localhost opt]#chmod +x cutlogs.sh 
[root@localhost opt]#crontab -e
0 1 * * * /opt/cutlogs.sh

4.Nginx防盗链

4.1 盗链的过程

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

4.2 Nginx防盗链的设置 

修改主配配置文件,添加防盗链设置

 

  在 /var/local/nginx/html 下放置好error.png 

 设置一台安装apache的主机 去盗链ngix主机,配置和之前的apche一样

(84条消息) Apache网页的优化,安全与防盗链_zhangchang3的博客-CSDN博客、

第三方访问原主机 :

 

第三方用户访问盗链主机:

 

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

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

相关文章

#算法记录 | Day33 贪心算法

1005.K次取反后最大化的数组和 class Solution:def largestSumAfterKNegations(self, A: List[int], K: int) -> int:A sorted(A, keyabs, reverseTrue) # 将A按绝对值从大到小排列for i in range(len(A)):if K > 0 and A[i] < 0:A[i] * -1K - 1if K > 0:A[-1] *…

最基础的electron打包运行配置,以及Electron Builder 和 Electron Forge两者差异

node版本 v16.19.0 开发之前请务必去官网查看node所支持的版本&#xff0c;不然安装会报错 推荐使用 yarn 包管理 引入electron依赖 yarn add electron22.3.6 -D yarn add electron-builder -D创建electron配置文件 我这边为了模块化开发&#xff0c;将electron相关文件放…

Chapter3: Design Creation with RTL(ug949)

&#xff08;3.5&#xff09;Clock Domain Crossing 设计中的跨时钟域电路直接影响设计的可靠性。您可以设计自己的电路&#xff0c;但Vivado design Suite必须识别电路&#xff0c;并且必须正确应用ASYNC_REG属性。Xilinx提供XPM以确保正确的电路设计&#xff0c;包括…

【c/c++编译工具】——Cmake的学习

简介 目录 简介 1. Cmake的基本语法 2. 常用指令 3. CMake常用的变量 4. CMake编译工程 5. 构建方式 6. 实战---CMake代码实战 CMake是一个跨平台的安装编译工具&#xff0c;可以用简单的语句来描述所有平台的安装(编译过程)。CMake可以说已经成为大部分C开源项目标配…

将自己的服务注册成Windows服务

winsw下载地址 https://github.com/winsw/winsw/releases 如何注册服务 将WinSW.exe复制到自定义的目录同目录下创建projectName.xml。特别注意&#xff0c;xml和exe必须同名配置 xml文件 xml配置信息如下 <service><id>wjb-member</id><name>wjb-me…

15-721 Chapter7 索引

锁的分类 锁占用少量内存&#xff0c;实际上在不竞争的情况下性能不错. 第一个就是靠test_and_set实现的自旋锁&#xff0c;高效&#xff0c;因为在用户态&#xff0c;但是却不可扩展&#xff0c;对cache&#xff0c;os都不友好 第二个是mutex&#xff0c;实际上两个部分组成…

浮空,定位

浮动原理&#xff1a; 清除浮动 高度塌陷是怎么造成的&#xff0c;浮动元素脱离当前文档流&#xff0c;然后无法撑起父容器导致了高度塌陷&#xff0c;因为父容器没有设置高度 解决方法&#xff1a; 1.将父元素变成bfc元素 2.父元素浮动 3.清除浮动&#xff1a; 通过给父元…

小伙被内卷逼成扫地僧,把牛客网所有面试题整理成25W字面试手册

很多工作过了 5 年之后的工程师&#xff0c;都表示写不动 CRUD 代码了&#xff0c;都会考虑转架构师&#xff0c;但是一想到面试&#xff0c;可能心里就会一紧。 一般面试大厂架构师的岗位至少需要 3 轮技术面试&#xff0c;我咨询了一下阿里的大佬&#xff0c;了解到每一轮的…

数字化时代,如何建造会“运转”的数仓

在建设数仓之前需要根据数据基础和业务需求来决定要建设什么标准的数仓。 常见数仓问题 1、公共底层加工逻辑分散&#xff1a;对于来自多个数据源&#xff0c;但需要使用相同过滤和解析方式公共底层数仓&#xff0c;其过滤和解析代码在每个任务或配置中直接静态复制&#xff…

【系统集成项目管理工程师】项目范围管理

&#x1f4a5;十大知识领域&#xff1a;项目范围管理 项目范围管理包括以下 6 个过程: 编制范围管理计划过程收集需求过程定义范围过程创建工作分解结构过程确认范围过程范围控制过程 一、编制范围管理计划过程 对如何定义、确认和控制项目范围的过程进行描述 1、输出&#xff…

ch02-PyTorch数据预处理

ch02-PyTorch数据预处理0.引言1.数据读取机制 Dataloader 与 Dataset1.1.纸币二分类1.2.DataSet与DataLoader1.2.1.torch.utils.data.DataLoader&#xff1a;构建可迭代的数据装载器1.2.2.torch.utils.data.Dataset&#xff1a;Dataset抽象类1.2.3.以人民币分类为例2.数据预处理…

【Python】如何正确执行python装饰器?

文章目录前言一、错误的做法是什么&#xff1f;二、正确的方法总结前言 说到Python装饰器的执行顺序&#xff0c;有很多半吊子张口就来&#xff1a; 靠近函数名的装饰器先执行&#xff0c;远离函数名的装饰器后执行。 这种说法是不准确的。但是这些半吊子多半还会不服&#…

海明码的计算和检错纠错

海明码 1.学习前提 学习海明码之前&#xff0c;我们要约定3个原则&#xff1a; 海明码只能检测出2位错&#xff0c;纠1位错(因此不要问如果3位错怎么办等幼稚问题)。海明码默认进行偶校验(除非特殊说明使用奇校验)。海明码是一串由0和1组成的序列(除01外没有其他的值&#x…

ASEMI代理AD8606ACBZ-REEL7原装ADI车规级AD8606ACBZ-REEL7

编辑&#xff1a;ll ASEMI代理AD8606ACBZ-REEL7原装ADI车规级AD8606ACBZ-REEL7 型号&#xff1a;AD8606ACBZ-REEL7 品牌&#xff1a;ADI/亚德诺 封装&#xff1a;WLCSP-8 批号&#xff1a;2023 引脚数量&#xff1a;8 安装类型&#xff1a;表面贴装型 AD8606ACBZ-REEL7…

Serverless 冷启动:如何让函数计算更快更强?

问题背景 Serverless 计算也称服务器无感知计算或函数计算&#xff0c;是近年来一种新兴的云计算编程模式。其致力于大幅简化云业务开发流程&#xff0c;使得应用开发者从繁杂的服务器运维工作中解放出来&#xff08;例如自动伸缩、日志和监控等&#xff09;。借助 Serverless…

APT攻击及密码学

目录标题什么是APT攻击&#xff1f;APT攻击过程APT防御技术APT防御过程沙箱处理流程密码学什么是对称加密&#xff1f;什么是非对称加密&#xff1f;SSL工作过程什么是APT攻击&#xff1f; APT攻击即高级可持续威胁攻击&#xff0c;也称为定向威胁攻击&#xff0c;指某组织对特…

fastCGI快速上手

fastCGI OVERVIEWfastCGI一、CGI二、fastCGI三、fastCGI使用1.fastCGI和spawn-fcgi安装2.nginx fastcgi&#xff08;1&#xff09;nginx的数据转发&#xff08;2&#xff09;spawn-fcgi启动&#xff08;3&#xff09;fastCGI进程处理3.fastCGI总结四、其他1.fastCGI环境变量2.…

【图像分割】LabelMe基本使用/标注标签格式转换及可视化

前言 之前一直在做目标检测的相关内容&#xff0c;使用LabelImg标注检测数据轻车熟路。不过最近尝试探索一下图像分割场景&#xff0c;需要用到LabelMe标注用于分割的数据标签&#xff0c;本文进行过程记录。 图像分割数据标签示例 以道路分割为例&#xff0c;下图是deepglo…

基于MVC+SSH的文章发布系统源码数据库毕业论文

目 录 摘要 1 Abstract 2 1 绪论 1.1 课题背景 1.2 研究现状及发展趋势 1.3 课题意义与目的 1.4 研究内容 1.5 论文组织 2 开发工具和技术介绍 2.1 开发工具 2.1.1 Myeclipse简介 2.1.2 MySQL简介 2.1.3 Tomcat简介 2.2 开发技术 2.…

【LInux】MySQL高可用之主从复制

一、Mysql主从架构技术说明 Mysql内建的复制功能是构建大型&#xff0c;高性能应用程序的基础。将Mysql的数据分布到 多个系统上去&#xff0c;这种分布的机制&#xff0c;是通过将Mysql的某一台主机&#xff08;Master&#xff09;的数据复 制到其它主&#xff08;slaves&…