Nginx服务优化与防盗链

news2024/11/27 18:40:54

目录

1.隐藏nginx版本号

        1.查看版本号

         2.隐藏版本信息

2.修改用户与组

3.缓存时间

4.日志分割

5.连接超时

6.更改进程数

7.网页压缩

8.配置防盗链

        1.配置web源主机(192.168.156.10 www.lhf.com)

        2.配置域名映射关系  

        3.配置盗链主机 (192.168.156.110 www.dao.com)

        4.在web源主机(192.168.52.210 www.zhuo.com)中配置防盗链


1.隐藏nginx版本号

   1.查看版本号

      方法一:curl 命令

       可以在 CentOS 中使用命令 curl -I http://192.168.156.140显示响应报文首部信息. 

curl -I http://192.168.156.140

方法二:在网页中查看

1. #切换至html目录,拖一个图片进去
cd /apps/nginx/html
​
2. #在网页中查看
http://192.168.156.140/
 
3.#打开浏览器访问IP地址,然后按F12,打开查看

2.隐藏版本信息

方法一:修改配置文件

1.#修改配置文件
vim /apps/nginx/conf/nginx.conf
 
2.#重启nginx
systemctl restart nginx
 
3.#查看版本是否被隐藏
curl -I http://192.168.156.10
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;                              #添加,关闭版本号
    ......
}

 

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

1. #切换至nginx安装包所在目录
cd /opt/
2. #停止nginx服务
systemctl stop nginx.service
3. #切换至安装目录
cd nginx-1.18.0/
4. #切换至内核目录
cd src/core/
5. #进入配置文件
vim nginx.h
​
#define NGINX_VERSION      "yxp"
#define NGINX_VER          "yyy/" NGINX_VERSION
​
6. #切换至文件目录
cd ../../
​
7. #编译
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
​
8. #安装
make && make install -j4
​
9. #将配置文件下的之前关闭版本信息开启
vim /apps/nginx/conf/nginx.conf
server_tokens on;
​
10. #重启nginx
systemctl restart nginx
​
11. #查看版本信息
curl -I http://192.168.156.10
​

2.修改用户与组

1. #修改配置文件
vim /apps/nginx/conf/nginx.conf
​
user  lhf lhf;  #取消注释,修改用户为 lhf ,组为 lhf
​
2. #创建非登录用户
useradd -s /sbin/nologin lhf
​
3. #重启服务
systemctl restart nginx
​
4. #查看是否修改成功
ps aux | grep nginx

3.缓存时间

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

1. #修改配置文件
vim /apps/nginx/conf/nginx.conf
        #添加以下内容
        location ~ \.(jpg|png|bmp|gif)$ {
            root   html;
            expires 1d;
        }
​
​
2. #查看是否有语法错误
nginx -t
​
3. #重启服务
systemctl restart nginx.service 
​
4.#在网页中查看服务
http://192.168.156.10/2.png
​
 Cahce-Control:max-age=86400 表示缓存时间是 86400 秒。也就是缓存一天的时间,一天之内浏览器访问这个页面,都是用缓存中的数据,而不需要向 Nginx 服务器重新发出请求,减少了服务器的使用带宽。

 

 

4.日志分割

       随着Nginx运行时间的增加,产生的日志也会逐渐增加,为了方便掌握Nginx的运行状态,需要时刻关注Nginx日志文件。太大的日志文件对监控是一个大灾难,不便于分析排查,需要定期的进行日志文件的切割。

1. #写脚本
vim /apps/nginx/nginx_log.sh 
​
#!/bin/bash
#this is for divide nginx log
d=$(date +%F -d -1day)                                       #显示前一天的时间
path="/var/log/nginx"   
pid="/apps/nginx/logs/nginx.pid"
​
[ -d $path ] ||mkdir -p $path                                #创建日志文件目录
mv /apps/nginx/logs/access.log ${path}/www.yxp.com-$d      #移动并重命名日志文件                                                 kill -USR1 $(cat $pid)                                     #重建新日志文件
find $path -mtime +30 -delete                                #删除30天之前的日志文件
​
2. #赋予权限
chmod +x /apps/nginx/nginx_log.sh 
​
3. #计划任务
[root@localhost nginx]#crontab -e
​
30 1 * * * /apps/nginx/nginx_log.sh

扩展小知识

在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime

ctime(status time): 当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time, 只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。

atime(accesstime): 当使用这个文件的时候就会更新这个时间。

mtime(modification time): 当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。

5.连接超时

HTTP有一个KeepAlive模式,它告诉web服务器在处理完一个请求后保持这个TCP连接的打开状态。若接收到来自同一客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能。

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)。

#修改配置文件
vim /apps/nginx/conf/nginx.conf
-----------------------------------
http {
...... 
    keepalive_timeout 65 180;
    client_header_timeout 80;
    client_body_timeout 80;
...... 
}
------------------------------------
 
#重启nginx服务
systemctl restart nginx.service
​
#在网页中测试
192.168.156.10

 

 

6.更改进程数

在高并发场景,需要启动更多的Nginx进程以保证快速响应,以处理用户的请求,避免造成阻塞。
网段一瞬间,比如:淘宝;一瞬间请求过多时,cpu会 负载,这时就需要增加CPU工作个数,每个CPU可以处理多少个最大文件数调高,worker_processes*worker_connections 等于它的同一时间段最多可以有多少台机器来访问。

//配置文件优化以及内核优化
1. #统计cpu核数
cat /proc/cpuinfo |grep processor|wc -l
或
cat /proc/cpuinfo |grep -c processor
​
2. #查看目前有的核数
ps -aux |grep nginx
​

3. #修改 Nginx 的配置文件worker_processes 参数,一般设为 CPU 的个数或者核数,
在高并发的情况下可设置为 CPU 个数或者核数的 2 倍,可以查看 CPU 的核数以确定参数。
vim /apps/nginx/conf/nginx.conf
​
worker_processes  2;
worker_cpu_affinity 01 10; 设置每个进程由不同的cpu处理,计算机是二进制语言,01(1),10(2)
//内核优化、做亲和度、指定2个/4个线程,怎么使用CPU内核,目的是让CPU的内核压力均衡
 
events {
    worker_connections  4096;
}
 
4.更该系统的处理线程的最大数
ulimit -a  #查看
ulimit -n 60000  #更改为60000
​
5. #重启服务并查看
systemctl restart nginx.service
ps -aux |grep nginx
​

1.统计cpu核数

 2. 查看目前有的核数

 3.修改 Nginx 的配置文件

4.重启服务和验证进程

7.网页压缩

    1.Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能;

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

1. #修改配置文件
  gzip on;                          #取消注释,开启gzip压缩功能
   gzip_min_length 1k;              #最小压缩文件大小
   gzip_buffers 4 16k;              #压缩缓冲区,大小为4个16k缓冲区
   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;       #压缩类型,表示哪些网页文档启用压缩功能
​
2. #重启服务
systemctl restart nginx.service 
​
​
3. #网页查看
http://192.168.156.10/2.png

 

8.配置防盗链

     1.在企业网站服务中,一般都要配置防盗链功能,以避免网站内容被非法盗用,造成经济损失,也避免了不必要的带宽浪费。

     2.Nginx 的防盗链功能也非常强大,在默认情况下,只需要进行很简单的配置,即可实现防盗链处理。

1.配置web源主机(192.168.156.10 www.lhf.com)

  (1)安装nginx服务并配置被盗链图片

#导入图片2.gif
准备一张图片 改名为2.gif
 
#切换目录
cd /apps/nginx/html/
 
#上传图片
rz -E
 
#编辑主页文件
vim index.html 
-------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
 
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required</p>
 
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
 
<p><em>Thank you for using nginx.</em></p>
<img src="2.gif"/>         #插入添加此行
 
-------------------------------------------------------
#检查和重启服务
nginx -t
systemctl restart nginx
 
#验证
火狐输入
192.168.156.10

 

 

 

2.配置域名映射关系 

#修改主机名和IP配置文件
vim /etc/hosts
-------------------------------------------------- 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.156.10 www.lhf.com       #添加此行
 
#关闭防火墙并重启服务
systemctl stop firewalld.service 
setenforce 0
systemctl restart nginx

 

3.配置盗链主机 (192.168.156.110 www.dao.com)

   (1)安装apache服务并配置盗链主页

#安装apache服务
yum install httpd -y  
 
#配置盗链主页
vim /var/www/html/index.html
---------------------------------------------                                                                                                         
<html>
<body>
<h1>盗链</h1>
<img src="http://www.lhf.com/2.gif"/>  #图片链接地址通过浏览器访问http://www.lhf.com 所得图片地址
</body>
</html>
 

(2) 设置域名映射

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.156.10 www.lhf.com
192.168.156.110 www.dao.com

(3)重启服务并测试

#关闭防火墙并重启服务
systemctl stop firewalld.service 
setenforce 0
systemctl restart httpd
 
#在盗链主机(192.168.156.110 )的浏览器中输入盗链主机的域名
打开火狐输入
192.168.156.10 或 www.lhf.com
和
192.168.156.110 或 www.dao.com
验证是否被盗链

 

 

 

4.在web源主机(192.168.52.210 www.zhuo.com)中配置防盗链

  (1) 将盗链图片放入web源主机中

cd /apps/nginx/html/      #切换目录
rz -E                     #上传图片

 

(2)配置防盗链

vim /apps/nginx/conf/nginx.conf    (约49行开始插入
--------------------------------------------------------
http {
......
	server {
	......
		location ~* \.(jpg|gif|swf)$ {
			valid_referers none blocked *.lhf.com lhf.com;
			if ( $invalid_referer ) {
				rewrite ^/ http://www.lhf.com/3.png;
            }
        }
------------------------------------------------------------
~* \.(jpg|gif|swf)$ :这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的文件;
 
valid_referers :设置信任的网站,可以正常使用图片;
 
none:允许没有http_refer的请求访问资源(根据Referer的定义,它的作用是指示一个请求是从哪里链接过来的,如果直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含 Referer 字段的),如 http://www.lhf.com/2.jpg 
我们使用 http://www.lhf.com 访问显示的图片,可以理解成 http://www.zhuo.com/2.jfif 这个请求是从 http://www.lhf.com 这个链接过来的。
 
blocked:允许不是http://开头的,不带协议的请求访问资源; 
 
*.lhf.com:只允许来自指定域名的请求访问资源,如 http://www.zhuo.com
 
if语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为true,则执行后面的操作
 

 

 

 (3)检查并重启服务

nginx -t
systemctl restart nginx

 

(4)验证防盗链是否有效

#在盗链主机(192.168.156.110 )的浏览器中输入盗链主机的域名
打开火狐输入
192.168.156.10 或 www.lhf.com
和
192.168.156.110 或 www.dao.com
验证是否被盗链

 

 

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

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

相关文章

python实现波士顿房价预测---(2)

计算梯度 继续上一篇的内容python实现波士顿房价预测—(1)。 梯度计算公式中引入计算因子12\frac{1}{2}21​&#xff0c;为了计算更加简洁。 L12N∑i1N(yi−zi)2L\frac{1}{2N}\sum_{i1}^{N}(y_i - z_i)^2L2N1​∑i1N​(yi​−zi​)2 其中ziz_izi​是模型对于第i个样本的预测值…

【halcon】轮廓拟合相关函数

涉及函数 edges_sub_pix 寻找边缘 edges_sub_pix (Image, Edges, canny, 1, 10, 20) 后面三个参数&#xff0c;越小&#xff0c;找到的细节越多。这个是对应录波器为canny时。 canny滤波器用的最多。 segment_contours_xld 将连续的轮廓进行分段&#xff0c;按圆弧或者执…

软件测试13

Linux命令 1.pwd&#xff1a;查看当前所在的路径位置 2.ls&#xff1a;查看当前路径下有哪些文件 3.cd&#xff1a;切换路径 4.touch&#xff1a;创建普通文件&#xff0c;可以创建单文件&#xff0c;也可以创建多文件&#xff08;touch a&#xff0c;touch b c&#xff09; 5…

【专项训练】高级搜索

高级搜索,这部分非常烧脑,可略过! 包括:剪枝、双向BFS、启发式搜索! 启发式搜索:优先队列,即优先级搜索! 回溯:分治 + 试错 数独问题,类似八皇后! 36. 有效的数独 https://leetcode.cn/problems/valid-sudoku/description/ class Solution(object

Java【二叉搜索树和哈希表】模拟实现 + 【Map和Set】介绍

文章目录前言一、二叉搜索树1、什么是二叉搜索树2、模拟实现二叉搜索树2.1, 查找2.2, 插入2.3, 删除3、性能分析二、模型三、哈希表1、什么是哈希表1.1, 什么是哈希冲突1.2, 避免, 解决哈希冲突1.2.1, 避免: 调节负载因子1.2.2, 解决1: 闭散列(了解)1.2.3, 解决2: 开散列/哈希桶…

基于卷积神经网络CNN的水果分类预测,卷积神经网络水果等级识别

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN水果分类预测 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活&#xff0c;为节能减排&#xff0c;减少电能…

推荐系统 FM因式分解

reference&#xff1a;知乎 FM算法解析 LR算法没有二阶交叉 如果是id类特征&#xff0c;这里的x是0/1&#xff0c;raw的特征输入就是float&#xff0c;当然&#xff0c;在我的理解里&#xff0c;一般会把raw的特征进行分桶&#xff0c;还是映射到0/1特征&#xff0c;不然这个w…

树莓派测试wifi与eth速率

测试网速方法&#xff1a; 1.安装插件&#xff1a; 首先在树莓派端安装iperf3 sudo apt install iperf3PC端也需要安装iperf3&#xff0c;单击下面网址即可 下载网址 压缩包解压到桌面&#xff0c;文件内容如下图所示&#xff1a; 2.开始测速服务&#xff1a; 树莓派端在…

周报终结者 GitLab 个人工作记录查询器

序言 每周都要写周报&#xff0c;烦死人。为了解救自己&#xff0c;把自己从无聊的工作中抽离出来。 特别写了一个工具。可以查询GitLab中自己一段时间内的所有提交记录。 按照项目和分支进行排序 效果 还可以查询原始的json数据方便自己进行筛选和扩展 使用方式 1.获取个人…

从 1 秒到 10 毫秒!在 APISIX 中减少 Prometheus 请求阻塞

本文介绍了 Prometheus 插件造成长尾请求现象的原因&#xff0c;以及如何解决这个问题。 作者屠正松&#xff0c;Apache APISIX PMC Member。 原文链接 现象 在 APISIX 社区中&#xff0c;曾有部分用户陆续反馈一种神秘现象&#xff1a;部分请求延迟较长。具体表现为&#xf…

Android电视盒子最强看电视app-tvbox配置(视频源)教程

今天给大家分享一下安卓tv上最强的看视频神器-tvbox的配置方法 tvbox是一款影视观看类的软件&#xff0c;各种影视资源都是为你免费提供的&#xff0c;还有海量热门影视为你提供电视直播&#xff0c;让你可以实时在线进行观看以及体验一样&#xff0c;超多影视剧内容你感兴趣的…

实景建模整合了什么优势?有哪些领域应用?

近年来&#xff0c;无接触经济、线上营销模式成为了热门&#xff0c;伴随着国家十四五规划的出台&#xff0c;对数字经济的扶持是巨大的。VR实景迎来了发展新利好&#xff0c;实景建模—专业的倾斜摄影测量三维实景建模平台&#xff0c;为你真实还原现实世界&#xff01; 实景建…

Homekit智能家居系列一智能触摸面板开关

触摸开关&#xff0c;即通过触摸方式控制的墙壁开关&#xff0c;其感官场景如同我们的触屏手机&#xff0c;只需手指轻轻一点即可达到控制电器的目的&#xff0c;随着人们生活品质的提高&#xff0c;触摸开关将逐渐将换代传统机械按键开关。 触摸开关控制原理 触摸开关我们把…

【Adobe】GenP3.0的使用教程

1、Google一下GenP 2、或者直接点击&#xff1a;https://www.reddit.com/r/GenP/ 3、选择GenP 3.0 - NEW 4、点击下载 注&#xff1a;这个地址可以不用科学上网即可下载&#xff1a;https://www.mediafire.com/file/jr0jqeynr4h21f9/Adobe_GenP_3.0.zip/file 5、点击运行 RunM…

【并发基础】操作系统中线程/进程的生命周期与状态流转以及Java线程的状态流转详解

目录 一、操作系统中进程和线程的状态 1.1 进程 1.1.1 进程的概念 1.1.2 进程的状态 1.1.3 进程调度流程图&#xff08;五状态&#xff09; 1.1.4 挂起状态 1.1.4 进程调度流程图&#xff08;六状态和七状态&#xff09; 1.1.5 睡眠状态 1.1.6 进程的诞生与消亡 1.2 线程 1.2.1…

运营新人必看 eBay申诉的最全资料

eBay作为一个电商交易平台&#xff0c;限制还是不少的。前几篇eBay系列文章发布后&#xff0c;也有些兄弟来向我反应eBay平台的严格程度&#xff0c;很容易因为这样那样的原因就被封掉了&#xff0c;自己也莫名其妙的。龙哥今天就总结一下eBay封号中比较常见的原因和万一被封要…

关于js数据类型的理解

目录标题一、js数据类型分为 基本数据类型和引用数据类型二、区别&#xff1a;传值和传址三、深浅拷贝传值四、数据类型的判断一、js数据类型分为 基本数据类型和引用数据类型 1、基本数据类型 Number、String、Boolean、Null、undefined、BigInt、Symbol 2、引用数据类型 像对…

详解信道估计的发展与最新研究进展(MIMO)

目录 一. MIMO信道估计的重要性 二. 最经典的两种信道估计方法 2.1 最小二乘信道估计(LS) 2.2 最小均方误差信道估计(MMSE) 三. 优化传统的MIMO信道估计技术 四. 介绍压缩感知技术 五. 基于压缩感知的MIMO信道估计 5.1 压缩感知怎么用在MIMO信道估计 5.2 改进压缩感知…

BIO,NIO,AIO

IO模型 用什么样的通道进行数据传输和接收&#xff0c;java支持3种io网络编程模式 BIO NIO AIO BIO 同步阻塞 一个客户端连接对应一个处理线程 BIO示例代码&#xff08;客户端和服务端&#xff09; package com.tuling.bio;import java.io.IOException; import java.net.So…

WIFI P2P架构

WI-FI P2P定义架构3个组件组织结构技术标准P2P DiscoveryDevice Discovery&#xff08;扫描&#xff09;流程p2p probe 管理帧Group Formation&#xff08;组网&#xff09;GO Negotiation&#xff08;GON&#xff09;流程P2P Public Action管理帧Provision Discovery&#xff…