Nginx优化与防盗链

news2024/11/27 18:50:48

Nginx优化与防盗链

📒博客主页: 微笑的段嘉许博客主页

💻微信公众号:微笑的段嘉许

🎉欢迎关注🔎点赞👍收藏⭐留言📝

📌本文由微笑的段嘉许原创!

📆CSDN首发时间:🌴2023年2月日22🌴

✉️坚持和努力一定能换来诗与远方!

🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

本文介绍

​ 在上一篇文章中已经介绍了Nginx服务器的安装配置,感兴趣的小伙伴可以点击连接阅读配置Nginx虚拟主机,本文主要介绍nginx的优化与防盗链。


📌导航小助手📌

文章目录

  • Nginx优化与防盗链
    • @[toc]
  • 详情介绍
  • 防盗链概念
  • 📝实验配置与实验
  • 一、在Centos01安装nginx服务,使用ww.duanjiaxu.com访问nginx
    • 1、在Centos01上安装nginx服务,使用www.duanjiaxu.com访问nginx
    • 2、配置IP地址和DNS
    • 3、修改nginx主配置文件
  • 二、在Centos02上安装DNS使用域名访问Centos01上使用域名www.duanjiaxu.com,centos03使用yum安装apache使用域名www.djx.com访问
    • 1、配置网卡服务
    • 2、安装DNS服务
    • 3、修改DNS配置文件
    • 4、Centos03使用yum安装apache使用域名www.djx.com访问
    • 5、修改apache的主配置文件
    • 6、验证
  • 三、在www.duanjiaxu.com域名的网站隐藏nginx版本、查看nginx管理用户、设置网页缓存、配置日志切割、配置nginx日志切割、设置超时时间
    • 1、在nginx网站隐藏nginx版本号,查看nginx管理用户
    • 2、设置网页缓存
    • 3、配置nginx日志切割、设置超时时间
    • 4、设置nginx网站服务器保持时间和进程优化
    • 1、配置nginx防盗链

详情介绍

​ Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上ngimx,的并发能力确实在同类型的网页服务器中表现较好
Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率﹐能经受高负载的考验,有报告表明能支持高达50, 000个并发连接数。

Nginx作用:反向代理、负载均衡、动静分离等

防盗链概念

​ 防盗链简单来说就是存在我们服务中的一些资源,只有我们规定的合法的一类人才能去访问,其他人就不能去访问的资源(如css,js,img等资源)。

​ 具体点就是用户发送请求给nginx服务器,nginx服务器根据请求去寻找资源,请求的比如说是有个index.html文件,这个文件中会包含很多js,css,img等资源,这些文件在这个骨架中会被二次请求,在第二次请求时,会在请求头部上加上有个referer,这个referer只会在第二次请求时才会被加上。(referer表示第二次资源的来源地址)


📝实验配置与实验

拓扑图

image-20230212180224637

推荐步骤

  • 在Centos01上安装Nginx,设置网站根目录/www使用域名www.duanjiaxu.com访问
  • 在Centos02上安装DNS使用域名访问Centos01上使用域名www.duanjiaxu.com访问,Centos03使用yum安装apache使用域名www.djx.com访问
  • www.duanjiaxu.com域名的网站隐藏Nginx版本、查看Nginx管理用户、设置网页缓存、配置日志切割、配置Nginx日志切割、设置超时时间
  • www.bdqn.com网站配置防盗链防止www.djx.comwww.duanjiaxu.com的连接

实验步骤

一、在Centos01安装nginx服务,使用ww.duanjiaxu.com访问nginx

1、在Centos01上安装nginx服务,使用www.duanjiaxu.com访问nginx

1)上传nginx程序包

[root@centos01 ~]# mount /dev/cdrom /mnt/			//挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# ls /mnt/				//查看是哦福挂载成功
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-*			//删除系统自带的yum仓库
[root@centos01 ~]# ls /etc/yum.repos.d/			
local.repo
[root@centos01 ~]# cat /etc/yum.repos.d/local.repo 			//查看yum仓库
[local]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@centos01 ~]# rz			//上传nginx源代码程序
z waiting to receive.**B0100000023be50
[root@centos01 ~]# ls			//查看是否上传成功
anaconda-ks.cfg       nginx-1.16.1.tar.gz  模板  图片  下载  桌面
initial-setup-ks.cfg  公共                 视频  文档  音乐

image-20230212184509976

2)安装nginx依赖程序

[root@centos01 ~]# useradd -M -s /sbin/nologin nginx			//创建nginx用户
[root@centos01 ~]# yum -y install pcre-devel zlib-devel		//安装nginx依赖程序

image-20230212184713747

3)解压nginx程序包

[root@centos01 ~]# tar zxf ./nginx-1.16.1.tar.gz -C /usr/src/			//解压nginx程序包

4)配置修改nginx源代码伪装版本信息

[root@centos01 ~]# vim /usr/src/nginx-1.16.1/src/core/nginx.h		//进入nginx源代码目录
---
13 #define NGINX_VERSION      "7.0"			//版本号
 14 #define NGINX_VER          "IIS" NGINX_VERSION			//版本信息
 22 #define NGINX_VAR          "IIS"
---
[root@centos01 ~]# vim /usr/src/nginx-1.16.1/src/http/ngx_http_header_filter_module.c
---
 49 static u_char ngx_http_server_string[] = "Server: IIS" CRLF;			//修改nginx数据包请求头部

image-20230212184829325

image-20230212184833555

5)安装nginx

[root@centos01 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module			//安装模块
[root@centos01 nginx-1.16.1]# make && make install			//编译安装nginx程序
[root@centos01 nginx-1.16.1]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/				//优化命令

6)创建网站根目录

[root@centos01 ~]# mkdir /www			//创建网站根目录
[root@centos01 ~]# echo "www.duanjiaxu.com" > /www/index.html			//设置网站主页

2、配置IP地址和DNS

1)配置IP地址

[root@centos01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32			//进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
DNS1=192.168.100.20
---
[root@centos01 ~]# systemctl restart network				//重新启动网卡服务
[root@centos01 ~]# cat /etc/resolv.conf 			//查看DNS是否配置成功
# Generated by NetworkManager
nameserver 192.168.100.20

3、修改nginx主配置文件

1)修改主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件
---
2     user  nginx;			//nginx管理用户
 36     listen      192.168.100.10:80;			//监听的IP地址和端口
 39        charset utf-8;		//支持中文
 44             root   /www/;			//网站根目录

2)使用win10虚拟机验证是否能够正常访问网站

[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听端口
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      4193/nginx: master

image-20230212185102177

3)在win10虚拟机安装抓包软件查看伪装

image-20230212185234672

二、在Centos02上安装DNS使用域名访问Centos01上使用域名www.duanjiaxu.com,centos03使用yum安装apache使用域名www.djx.com访问

1、配置网卡服务

1)配置IP地址和DNS

[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32			//进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.20		//IP地址
NETMASK=255.255.255.0		//子网掩码
DNS1=192.168.100.20		//DNS
----
[root@centos02 ~]# systemctl restart network			//重新启动网卡服务
[root@centos02 ~]# cat /etc/resolv.conf 			//查看DNS是否配置成功
# Generated by NetworkManager
nameserver 192.168.100.20

image-20230212190107745

2、安装DNS服务

1)挂载系统光盘

[root@centos02 ~]# mount /dev/cdrom /mnt/		//挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos02 ~]# ls /mnt/			//查看系统光盘是否挂载成功
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL

2)安装DNS程序包

[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:bind-32:9.9.4-50.el7             ################################# [100%]
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:bind-chroot-32:9.9.4-50.el7      ################################# [100%]

3、修改DNS配置文件

1)修改DNS主配置文件

[root@centos02 ~]# echo "" > /etc/named.conf			//清空主配置文件
[root@centos02 ~]# vim /etc/named.conf				//进入主配置文件
---
options {
        listen-on port 53 { any; };
};
zone "duanjiaxu.com" IN {
        type master;
        file "var/named/duanjiaxu.com.zone";
};
zone "djx.com" IN {
        type master;
        file "var/named/djx.com.zone";
};
[root@centos02 ~]# named-checkconf /etc/named.conf			//检查主配置文件是否修改正确

image-20230212190437618

2)修改第一个DNS区域配置文件

[root@centos02 ~]# vim /var/named/duanjiaxu.com.zone		//进入第一个区域配置文件
---
$TTL            86400
@               SOA             duanjiaxu.com.  root.duanjiaxu.com. (
                2023020510
                1H
                15M
                1W
                1D
)
@               NS              centos02.duanjiaxu.com.
centos02        A               192.168.100.20
www             A               192.168.100.10
---
[root@centos02 ~]# named-checkzone duanjiaxu.com /var/named/duanjiaxu.com.zone 		//查看区域配置文件语法是否有误
zone duanjiaxu.com/IN: loaded serial 2023020510
OK

3)修改第二个DNS区域配置文件

[root@centos02 ~]# cp /var/named/duanjiaxu.com.zone /var/named/djx.com.zone			//复制第一个区域配置文件
[root@centos02 ~]# vim /var/named/djx.com.zone			//进入第二个区域配置文件
---
:%s/duanjiaxu.com/djx.com/g			//把duanjiaxu.com替换为djx.com
$TTL            86400
@               SOA             djx.com.        root.djx.com. (
                2023020510
                1H
                15M
                1W
                1D
)
@               NS              centos02.djx.com.
centos02        A               192.168.100.20
www             A               192.168.100.30		//IP地址修改为第二台apache服务器的IP地址
---
[root@centos02 ~]# named-checkzone djx.com /var/named/djx.com.zone			//查看区域配置文件修改是否有误
zone djx.com/IN: loaded serial 2023021010
OK

image-20230212190539385

image-20230212190542269

4)重新启动DNS服务

[root@centos02 ~]# systemctl restart named		//重新启动DNS服务
[root@centos02 ~]# netstat -anptu | grep named		//监听网卡
tcp        0      0 192.168.100.20:53       0.0.0.0:*               LISTEN      41066/named         
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      41066/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      41066/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      41066/named         
udp        0      0 192.168.122.1:53        0.0.0.0:*                           41066/named         
udp        0      0 192.168.100.20:53       0.0.0.0:*                           41066/named         
udp        0      0 127.0.0.1:53            0.0.0.0:*                           41066/named  

5)使用win10虚拟机验证第一台apache服务器是否能够正常访问

image-20230212190639466

4、Centos03使用yum安装apache使用域名www.djx.com访问

1)配置网卡服务

[root@centos03 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 			//进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.30
NETMASK=255.255.255.0
DNS1=192.168.100.20
[root@centos03 ~]# systemctl restart network				//重新启动网卡服务
[root@centos03 ~]# cat /etc/resolv.conf 				//查看DNS配置是否生效
# Generated by NetworkManager
nameserver 192.168.100.20
2)挂载系统光盘
[root@centos03 ~]# mount /dev/cdrom /mnt/			//挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos03 ~]# ls /mnt/			查看是否挂载成功
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@centos03 ~]# rm -rf /etc/yum.repos.d/CentOS-*			//删除系统自带的yum源
[root@centos03 ~]# ls /etc/yum.repos.d/
local.repo
[root@centos03 ~]# cat /etc/yum.repos.d/local.repo 
[local]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@centos03 ~]# yum -y install httpd			//使用yum仓库安装apache服务

5、修改apache的主配置文件

1)设置网站主页

[root@centos03 ~]# mkdir /www			//新建网站根目录
[root@centos03 ~]# echo "www.djx.com" > /www/index.html			//设置网站主页

2)修改apache主配置文件

[root@centos03 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak			//备份主配置文件避免修改错误原文件丢失
[root@centos03 ~]# vim /etc/httpd/conf/httpd.conf			//进入主配置文件
---
119 DocumentRoot "/www"			//修改网站根目录
131 <Directory "/www">			//授权网站根目录
132     Options Indexes FollowSymLinks
133     AllowOverride None
134     Require all granted
135 </Directory>
---
[root@centos03 ~]# httpd -t			//检查主配置文件是否修改正确
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe38:619c. Set the 'ServerName' directive globally to suppress this message
Syntax OK
[root@centos03 ~]# systemctl restart httpd			//重新启动apache服务
[root@centos03 ~]# netstat -anptu | grep httpd			//监听网卡
tcp6       0      0 :::80                   :::*                    LISTEN      1829/httpd

6、验证

1)使用域名www.duanjiaxu.com访问nginx网站

image-20230212191035356

2、使用域名www.djx.com访问apache网站

image-20230212191057882

三、在www.duanjiaxu.com域名的网站隐藏nginx版本、查看nginx管理用户、设置网页缓存、配置日志切割、配置nginx日志切割、设置超时时间

1、在nginx网站隐藏nginx版本号,查看nginx管理用户

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

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件
---
7     include       mime.types;
  8     default_type  application/octet-stream;
  9     sendfile    on;
 10     keepalive_timeout  65;
 11     server_tokens off;
---
[root@centos01 ~]# killall nginx			//停止nginx服务
[root@centos01 ~]# nginx			//启动nginx服务

image-20230212191314686

2)使用抓包软件查看版本号是否已经隐藏

image-20230212191358690

3)使用命令查看

[root@centos01 ~]# curl -I www.duanjiaxu.com
HTTP/1.1 200 OK
Server: IIS			//版本号已经隐藏掉
Date: Sat, 11 Feb 2023 11:34:31 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 18
Last-Modified: Sat, 11 Feb 2023 11:12:58 GMT
Connection: keep-alive
ETag: "63e7783a-12"
Accept-Ranges: bytes

image-20230212191419324

4)查看nginx用户

[root@centos01 ~]# ps -ef | grep nginx
root      51114      1  0 19:30 ?        00:00:00 nginx: master process nginx
nginx     51115  51114  0 19:30 ?        00:00:00 nginx: worker process
root      51254  47883  0 19:43 pts/0    00:00:00 grep --color=auto nginx

2、设置网页缓存

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件
 11     server_tokens off;
 12     server {
 13         listen      192.168.100.10:80;
 14         server_name  www.duanjiaxu.com;
 15         charset utf-8;
 16         access_log  logs/www.duanjiaxu.com.access.log;
 17     
 18         location / {
 19             root   /www;
 20             index  index.html index.htm;
 21             expires 1d;		//缓存时间1天
 22         }
---
[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务

2)使用win10虚拟机访问验证

image-20230212191528533

3、配置nginx日志切割、设置超时时间

1)创建目录存储切割日志后数据

[root@centos01 ~]# mkdir /nginx_log

2)创建日志切割脚本

[root@centos01 ~]# vim /opt/nginx_log_bak.sh
---
#/bin/bash
#Filename:duanjiaxu
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/nginx_log"
pid_path="/usr/local/nginx/logs/nginx.pid"
[-d $logs_path] || mkdir -p $logs_path
mv /usr/local/nginx/logs/www.duanjiaxu.com.access.log ${logs_path}/www.duanjiaxu
.com-access.log-$d
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 |xargs rm -rf
---
[root@centos01 ~]# chmod +x /opt/nginx_log_bak.sh			//添加执行权限

image-20230212191701858

3)设置计划任务周期备份nginx日志,每间隔两分钟备份一次日志

[root@centos01 ~]# crontab -e
---
*/2     *       *       *       *       /opt/nginx_log_bak.sh

4)查看生成的日志

[root@centos01 ~]# ls /nginx_log/
www.duanjiaxu.com-access.log-20230210	 			//生成的日志

4、设置nginx网站服务器保持时间和进程优化

1)修改nginx主配置文件保持时间和进程优化

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件
---
user  nginx;
worker_processes  5;			//启动5个nginx进程
pid     log/nginx.pid;
events {
    worker_connections  2048;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    access_log logs/access.log;
    sendfile    on;
    keepalive_timeout  10;
    client_header_timeout 15;		//设置客户端向服务器发送请求头的超时时间为15秒
    client_body_timeout 15;			//设置服务器向客户端发送请求头的超时时间为15秒
    server_tokens off;
    server {
        listen      192.168.100.10:80;
        server_name  www.duanjiaxu.com;
        charset utf-8;
        access_log  logs/www.duanjiaxu.com.access.log;

        location / {
            root   /www;
            index  index.html index.htm;
            expires 1d;
        }
    }
}

image-20230212191851264

2)重新启动nginx服务

[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听网卡
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      52521/nginx: master

3)查看启动的nginx进程

[root@centos01 ~]# ps -ef | grep nginx
root      52521      1  0 21:05 ?        00:00:00 nginx: master process nginx
nginx     52522  52521  0 21:05 ?        00:00:00 nginx: worker process
nginx     52523  52521  0 21:05 ?        00:00:00 nginx: worker process
nginx     52524  52521  0 21:05 ?        00:00:00 nginx: worker process
nginx     52525  52521  0 21:05 ?        00:00:00 nginx: worker process
nginx     52526  52521  0 21:05 ?        00:00:00 nginx: worker process
root      52562  47883  0 21:07 pts/0    00:00:00 grep --color=auto nginx

四、在www.duanjiaxu.com网站配置防盗链防止www.djx.com盗www.duanjiaxu.com的链接

1、配置nginx防盗链

1)上传图片

[root@centos01 www]# rz			//上传图片
z waiting to receive.**B0100000023be50
[root@centos01 www]# rz
z waiting to receive.**B0100000023be50
[root@centos01 www]# ls			//查看图片是否上传成功
error.png  index.html  logo.jpg

2)设置nginx网站图片

[root@centos01 www]# vim index.html	//进入网站根目录
---
www.duanjiaxu.com</br>
<img src="./logo.jpg"/>	//插入图片

3)访问nginx图片

image-20230212192351164

4)复制nginx网站的图片链接

image-20230212192414886

5)设置apache盗用nginx链接

[root@centos03 ~]# vim /www/index.html			//进入apache网站根目录
---
www.djx.com
<img src="http://www.duanjiaxu.com/logo.jpg"/>

6)防止apache网站查看是否盗链接成功

image-20230212192513251

7)修改nginx主配置文件防止盗链接

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf			//进入nginx主配置文件
---
  1 user  nginx;
  2 worker_processes  5;
  3 events {
  4     worker_connections  2048;
  5 }
  6 http {
  7     include       mime.types;
  8     default_type  application/octet-stream;
  9     access_log logs/access.log;
 10     sendfile    on;
 11     keepalive_timeout  10;
 12     client_header_timeout 15;
 13     client_body_timeout 15;
 14     server_tokens off;
 15     server {
 16         listen      192.168.100.10:80;
 17         server_name  www.duanjiaxu.com;
 18         charset utf-8;
 19         access_log  logs/www.duanjiaxu.com.access.log;
 20 
 21         location / {
 22             root   /www;
 23             index  index.html index.htm;
 24             expires 1d;
 25         }
 26         location ~*\.(jpg|gif|swf)$ {
 27                 valid_referers none blocked *.duanjiaxu.com duanjiaxu.com;
 28                 if ($invalid_referer) {
 29                 rewrite ^/ http://www.duanjiaxu.com/error.png;			//跳转到错误图片
 30              }
 31       }
 32   }
 33 }

image-20230212192550980

8)重启nginx服务

[root@centos01 ~]# killall nginx			//停止nginx服务
nginx: no process found
[root@centos01 ~]# nginx			//启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx			//监听网卡
tcp        0      0 192.168.100.10:80       0.0.0.0:*               LISTEN      53654/nginx: master

9)使用win10虚拟机验证

image-20230212192633154


🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

img

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

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

相关文章

图文并茂详解NAT协议(含实例分析)

什么是 NAT 协议 我们的计算机要想访问互联网上的信息&#xff0c;就需要一个地址&#xff0c;而且这个地址是大家&#xff08;其他主机&#xff09;所认可的&#xff0c;是公共的&#xff0c;这个地址也叫做公有 IP 地址。 与之相对的&#xff0c;除了公有 IP 地址外&#x…

Python自动化测试框架【Allure-pytest功能特性介绍】

Python自动化测试框架【Allure-pytest功能特性介绍】 目录&#xff1a;导读 前言 生成报告 测试代码 目录结构 Allure特性 Environment Categories Fixtures and Finalizers allure.attach 总结 写在最后 前言 Allure框架是一个灵活的轻量级多语言测试报告工具&am…

【PMP考试最新解读】第七版《PMBOK》应该如何备考?(含最新资料)

PMP新版大纲加入了ACP敏捷管理的内容&#xff0c;而且还不少&#xff0c;敏捷混合题型占到了 50%&#xff0c;前不久官方也发了通知8月启用第七版《PMBOK》&#xff0c;大家都觉得考试难度提升了&#xff0c;我从新考纲考完下来&#xff0c;最开始也被折磨过一段时间&#xff0…

玩游戏用哪个牌子的蓝牙耳机最好?打游戏无延迟的蓝牙耳机

作为一名苦逼的打工人&#xff0c;从早忙到黑&#xff0c;每天最期待的事莫过于下班回到家或是周末闲暇时光&#xff0c;来两把王者或吃鸡&#xff0c;配合无线游戏耳机&#xff0c;效果直接拉满&#xff0c;下面分享几款打游戏无延迟的蓝牙耳机。 一、南卡小音舱蓝牙耳机 蓝…

孪生工厂:机械臂加工产线 HMI 监控界面

2018 年&#xff0c;世界经济论坛(WEF)携手麦肯锡公司共同倡议并正式启动了全球“灯塔工厂网络项目”(Lighthouse Network)&#xff0c;共同遴选率先应用工业革命 4.0 技术实现企业盈利和持续发展的创新者与示范者。这就使得工厂系统需要对各流水线及生产运行成本方面进行多角度…

设计模式(十五)-面向对象概念

软件设计&#xff08;十五&#xff09;-UML建模&#xff08;下&#xff09;https://blog.csdn.net/ke1ying/article/details/129152487 一、设计原则 1、单一职责&#xff1a;设计目的单一的类。 2、开放-封闭原则&#xff1a;对扩展开放&#xff0c;对修改关闭。 3、里氏替…

微服务架构中的缓存设计浅析

在微服务架构中&#xff0c;缓存中间件越来越成为不可或缺的组件&#xff0c;下面聊聊微服务环境下的缓存设计。 1、简介 缓存在应用软件架构中是提高性能最直接的方式&#xff0c;如下 假设应用程序将数据存储在Mysql中&#xff0c;众所周知Mysql会将数据存储在硬盘上以防止…

git 拉取远程分支到本地

目录&#xff1a;***&#xff01;本小作者&#xff0c;是将终端和Git的可视化插件结合使用&#xff0c;刚接触的可以自习看一下&#xff0c;内容简单&#xff0c;避免弯路&#xff01;***一&#xff0c;简单了解远程分支1&#xff0c;连接远程&#xff1a;2&#xff0c;提交&am…

SpringBoot使用validator进行参数校验

Validated、Valid和BindingResultBean Validation是Java定义的一套基于注解的数据校验规范&#xff0c;比如Null、NotNull、Pattern等&#xff0c;它们位于 javax.validation.constraints这个包下。hibernate validator是对这个规范的实现&#xff0c;并增加了一些其他校验注解…

业务流程建模标注(BPMN)详细介绍

1、基本信息摘要&#xff1a;该文章的目的是对BPMN(Business Process Modeling Notation)的概要描述和介绍。描述基本的BPMN符号&#xff0c;包括这些图元如何组合成一个业务流程图&#xff08;Business Process Diagram&#xff09;2、BPMN简介2.1概述该文章的目的是对BPMN(Bu…

pytest之fixture用法

特点及优势1、命令灵活&#xff1a;对于setup.teardown&#xff0c;可以不起这两个名字2、数据共享&#xff1a;在conftest.py配置里写的方法可以实现数据共享&#xff0c;不需要import导入&#xff0c;可以跨文件共享3、scope的层次及神奇的yield组合相当于各种setup和teardow…

MySQL —— 表的操作

文章目录1. 创建表2. 查看表结构3. 修改表3.1 向表中插入数据3.2删除表中的数据3.3 修改表的性质3.3.1 添加字段3.3.2 修改字段的长度3.3.3 删除字段3.3.4 修改字段名3.3.5 修改表名4. 删除表5. 备份表前言&#xff1a; 本文会详细的讲解&#xff0c;在MySQL中表的操作。1. 创建…

Linux基础命令-uname显示系统内核信息

前言 这个命令主要是显示系统内核的相关信息&#xff0c;一般需要查看内核信息才会使用到这个命令&#xff0c;一起来看看吧。 一 命令的介绍 uname命令来自于英文词组“Unix name”的缩写&#xff0c;其功能是用于查看系统主机名、内核及硬件架构等信息。如果不加任务参数&am…

UVM实战(张强)-- UVM中的寄存器模型

目录一.整体的设计结构图二.各个组件代码详解2.1 DUT2.2 bus_driver2.3 bus_sequencer2.4 bus_monitor2.5 bus_agent2.6 bus_transaction2.7 bus_if2.8 my_if2.9 my_transaction2.10 my_sequencer2.11 my_driver2.12 my_monitor2.13 my_agent2.14 my_scoreboard2.15 my_env2.16…

龙芯GS232(MIPS 32)架构cache管理笔记

1 mips32架构 MIPS架构是一种基于精简指令集&#xff08;Reduced Instruction Set Computer&#xff0c;RISC&#xff09;的计算机处理器架构。MIPS架构由MIPS Technologies公司在1981年开发&#xff0c;并在1984年发布了第一款MIPS处理器。 MIPS架构的特点包括&#xff1a; …

Alkyne choline,685082-61-5,炔基胆碱,炔基可通过铜催化的点击化学进行修饰和共轭

1、基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a;CAS号&#xff1a;685082-61-5中文名&#xff1a;炔胆碱&#xff0c;炔基胆碱英文名&#xff1a;Alkyne-choline &#xff0c;Alkyne choline2、详细产品数据&#xff08;Detailed Product Data&#xf…

深入讲解CFS组调度!(下)

接上文深入讲解CFS组调度&#xff01;&#xff08;上&#xff09; 六、task group时间片 6.1. 时间片分配 若使能CFS组调度会从上到下逐层通过权重比例来分配上层分得的时间片&#xff0c;分配函数是sched_slice()。但是从上到下不便于遍历&#xff0c;因此改为从下到上进行…

盘点全网好评最多的7款团队协同软件,你用过哪款?

能亲自带团队管理项目当然是一件开心和兴奋的事&#xff0c;但是突然成为团队负责人后开始不大适应。如何转换角色&#xff0c;还有自己和团队成员之间在心理、行为等方面的互动也变得很敏感。新手领导上任的过程&#xff0c;是团队秩序再造的过程&#xff1b;是晋升者个人职业…

Python----------字符串

1.转义字符 注&#xff1a;转义字符放在你所想效果字符前 2.原始字符串 print(r"D:\three\two\one\now") ->D:\three\two\one\now注&#xff1a; 在使用原始字符串时&#xff0c;转义字符不再有效&#xff0c;只能当作原始的字符&#xff0c;每个字符都没有特殊…

MySQL(一)基础使用

MySQL基础使用概念数据库相关概念关系型数据库SQL通用语法SQL分类DDL数据库操作表操作表操作-数据类型表操作-修改表操作-删除DML添加数据修改数据删除数据DQL基本查询&#xff08;不带任何条件&#xff09;查询多个字段&#xff1a;字段设置别名去除重复记录条件查询&#xff…