文章目录

  • nginx简介
    • http服务器的发展
    • nginx的优点
    • nginx应用场景
  • nginx下载及安装
    • 安装包内的目录及文件的介绍
      • auto
      • CHANGES
      • CHANGES.ru
      • conf
      • configure
      • contrib
      • html
      • LICENSE
      • man
      • README
      • src
    • 编译和安装:
      • 编译
      • 安装
      • nginx的运行:
  • nginx的更新与回退
    • nginx版本的查看
    • nginx版本的更新
    • nginx版本的回退
  • nginx的日志切割
  • nginx的压缩功能
    • 配置gzip压缩
  • 设置nginx使用systemd的启动方式
  • 关于nginx的配置文件
  • nginx的常用配置
    • 实现后端负载均衡及健康检查
    • 开启nginx的用户及worker进程的数量
    • 最大连接数的修改
    • nginx的一些并发优化
      • 修改网络内核对TCP连接的有关限制
      • 修改限制接受新TCP连接侦听队列的大小
      • 启用tcp连接timewait快速回收和利用
      • 使用epoll多路复用IO模型
      • 开启文件高效传输模式
    • 限流
      • 限制并发连接
      • 带宽的限制
      • 限制在单位时间内的连接请求
    • ssl:
    • 自动索引
    • 解决在访问nginx中碰到的中文乱码问题
    • 缓存配置
    • 禁用在nginx发布目录中的脚本
    • 访问限制
      • 限制某个ip的访问
    • 重定向
      • 防止域名恶意解析到服务器ip
      • 80重定向到443
      • 网页重定向
    • 防盗链
      • 盗链
      • 防盗连

nginx简介

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯人编写,第一个版本在2004年10月发布。
其特点是占有内存少,并发能力强,但是只能处理静态页面。

http服务器的发展

早期,最流行的http服务器当然是Apache,但是随着互联网的快速增长,用户的日益增多,服务器的压力就会变大。起初的做法就是对服务器进行优化,增加服务器配置。
但是,因为摩尔定律,在等倍的增加服务器配置的同时,能够处理的请求却不会跟着配置做等倍增加,且增加的越来越少。
对于此问题,nginx横空出世。

nginx的优点

nginx特点为高并发,高性能,稳定性高。且有良好的可拓展性,内存消耗少。官方的数据为3万个并发连接,10个eginx进程,消耗的内存为150M。较apache有更强的重写规则。内置后端健康检查功能。节省带宽等…

nginx应用场景

  • 静态资源(html页面)
  • 反向代理(能够实现缓存,负载均衡)
  • 可作为API(应用程序接口),通常使用openresty,可添加支持eginx的一些插件

nginx下载及安装

可以在nginx官网nginx.org下载nginx:

在这里插入图片描述
在这里插入图片描述
下载完成后,进行安装:
(nginx有源码包,也有rpm包。但是建议使用源码编译的方式进行有选择的安装,可以选择自己要用到的模块)

对下载好的源码包进行解压:
在这里插入图片描述

安装包内的目录及文件的介绍

auto

在这里插入图片描述
其中有四个子目录:cc、type 、lib、os
cc:编译时需要用的工具
os:对操作系统进行判断
type 和 lib 辅助configure进行编译

CHANGES

CHANGES中存放各版本更新修复的信息:
在这里插入图片描述

CHANGES.ru

nginx的作者为俄罗斯人,因此CHANGES.ru为俄罗斯版的CHANGES
在这里插入图片描述

conf

conf内存放着nginx的配置文件,方便管理人员进行配置(不用手动去写)
在这里插入图片描述

configure

编译需要用到的二进制文件

contrib

提供nginx语法检测的字体
在这里插入图片描述
首先使用vim打开nginx.conf配置文件:
在这里插入图片描述
可以看到配置文件中字体只有两种颜色,生效的为黑色,不生效的为蓝色。
此时,在家目录下新建.vim文件,并将contrib内的所有文件复制到.vim文件中:
在这里插入图片描述
此时再次打开配置文件nginx.conf:
在这里插入图片描述
可以看到有了彩色的字体进行语法检测,当输入正确时,会变色。

html

html和apache相同,为默认布目录
在这里插入图片描述
其中50x.html为报错页面(报错5xx一般是服务器的问题),index.hrml为默认发布页

LICENSE

存放证书

man

nginx的文档
在这里插入图片描述

README

关于nginx的一些说明

src

nginx的源码目录
在这里插入图片描述

nginx的编译和安装:
预编译:
添加http-ssl模块,使其支持https访问

 ./configure --prefix=/usr/local/nginx --with-http_ssl_module

在这里插入图片描述
预编译完成后,会产生objs目录(用来存放预编译的中间产物)
在这里插入图片描述
其中,Makefile的作用是组织c文件之间的相互调用

编译和安装:

编译

make 

在这里插入图片描述
make过程也会向objs目录中添加文件:
在这里插入图片描述
其中,‘nginx’目录为nginx的主程序
ngx_modules.c里存放nginx的目录(编译时添加的模块)
在这里插入图片描述

安装

make install

在这里插入图片描述
在指定的安装目录中进行查看:
在这里插入图片描述

nginx的运行:

进入sbin目录,使用脚本方式运行nginx:

./nginx

在这里插入图片描述
80端口被成功打开!

访问测试:
在这里插入图片描述
成功访问到nginx默认页面!
默认发布页面的测试:

 vim /usr/local/nginx/html/index.html ##编辑默认发布页

在这里插入图片描述
访问结果:
在这里插入图片描述

nginx的更新与回退

nginx版本的查看

在sbin目录中,./nginx -V 或者 nginx -V可以看到当前nginx的信息:
版本信息及编译nginx时所加的参数,支持的模块
在这里插入图片描述

nginx版本的更新

在企业中,时时刻刻要保证服务的不间断。所以在更新时,,用户必须无感知。而nginx支持热部署。
刚才安装的nginx版本为目前官网最新版1.18,所以没有更新的版本。这里我们使用1.17版本模拟nginx的更新:

首先,对老的版本进行备份(在更新失败时直接可以进行版本的回退)。在nginx中,任何东西文件都可以不需要,nginx的二进制程序是必须要的。所以,在备份时,只需要备份nginx的二进制程序(sbin/nginx)。
在这里插入图片描述

在官网下载好nginx1.17的源码压缩包,解压并进行预编译:

./configure --prefix=/usr/local/nginx --with-http_ssl_module

在这里插入图片描述
编译: make
在这里插入图片描述

此时,执行完编译后就不能执行安装动作,make install 仅当应用第一次在主机上安装时使用!,否则会覆盖之前存在的程序(配置、默认发布目录等),服务就会中断。

此时我们可以在存放预编译和编译的中间产物的objs目录中找到nginx的二进制程序,将此二进制程序复制到编译安装所在目录中的nginx/sbin/nginx 将原有的nginx二进制程序覆盖即可:

cp objs/nginx /usr/local/nginx/sbin/nginx -f

直接使用cp进行覆盖时,提示当前程序正在运行,须进行强制覆盖(-f参数):
在这里插入图片描述

此时nginx的版本:1.17
在这里插入图片描述
查看当前nginx进程:
在这里插入图片描述
可以看到,当前nginx存在两个进程,master进程和worker进程。这两个nginx进程为1.18版本nginx的进程。
此时新的用户请求还是这两个进程来处理,所以我们需要做的工作是让我们的新版本1.17去处理新的访问请求,旧版本1.
8不再接受访问请求。

nginx默认只有一个worker进程,master进程负责创建并监控worker进程。所以真实处理用户请求的进程是worker进程。

这里使用对进程发送信号的方式:

 kill -USR2 33573

对master进程(33573)发送信号,使其停止接收用户请求,并重新开启一个master进程,新开启的master进程开启一个worker进程来处理新的用户请求。
在这里插入图片描述
等到旧的worker进程处理完用户请求后将其关闭:

kill -WINCH 33573

在这里插入图片描述
可以看到,我们保留了老版本的master进程,目的在于备份!如果更新进行失败,可以进行回退,保留的master进程可以拉起worker进程。

到此,nginx就算更新成功!

nginx版本的回退

当前版本:
在这里插入图片描述
我们更新之前的版本为1.18,先将1.17版本回退到18

我们更新时对1.18版本nginx二进制程序的备份:
在这里插入图片描述
此时,直接使用此备份覆盖掉新版本nginx的二进制程序:

cp -f nginx.old nginx

此时nginx的版本成功回退到1.18版本:
在这里插入图片描述
还需要将我们更新时关掉的1.18版本nginx的worker进程拉起来(之前保留了旧的master进程)
在这里插入图片描述
使用kill -HUP 33573对旧的masker的worker进程和进行拉起:
在这里插入图片描述
同样道理,使用 kill -USR2 37551使新的worker停止接收用户请求,旧的worker进程开始接收用户请求。
在使用 kill -WINCH 3573对失败版本的worker进程进行关闭:
在这里插入图片描述
最后关闭失败版本的master进程:
在这里插入图片描述
至此,nginx版本回退工作完成!

nginx的日志切割

nginx可以作为反向代理服务器,当为反向代理服务器时,需要处理的请求量也是非常大的,这就导致nginx的日志大小非常大。所以需要对nginx的日志进行切割。
如果不进行日志切割,那么一个日志文件大大小可能高达六七个G,当打开日志文件时,大小超过服务器内存大小就会造成服务器死机的情况,并且不方便查看。

可以看到,nginx的日志分为两种 ,access.log 和 error.log
正常的连接日志和错误日志。

当前正常连接日志大小:
在这里插入图片描述
大小为4K,太小,不方便切割。

这里使用ab加压命令对nginx服务器进行加压访问:

ab -c 1 -n 100000 http://192.168.0.10/index.html

此命令表示,对192.168.0.10主机的默认发布页面进行1个并发,100000此请求:
在这里插入图片描述
再次查看日志大小:
在这里插入图片描述
日志已经从之前的4K增大到了16M

一般按照企业要求对日志进行备份,这里我们将每天的日志进行备份:
将access.log改名为前一天的日期_access.log
并将此操作定时循环去执行就可实现对日志进行切割。
前一天的日期可通过变量的方式进行实现:

date +%F -d -1day

此命令可以实现对当前日期的前一天日期进行显示:
在这里插入图片描述
对前一天日志进行备份:

mv access.log `date +%F -d -1day`_access.log

在这里插入图片描述
执行命令:

../sbin/nginx -s reopen

表示重新打开一个access.log
将新的日志信息存放在access.log

此时access.log为空文件,验证是否存放新的日志信息:
对nginx进行访问,再次查看access.log:
在这里插入图片描述
可以看到,访问请求被成功记录到了access.log

同样的方法,也可以对error.log进行备份。

将备份的所有动作写进脚本,放进crotable每天定时定点执行。实现对日志的切割
脚本:

#!/bin/bash
cd /usr/local/nginx/logs && mv access.log access_$(date +%F -d -1day).log
/usr/local/nginx/sbin/nginx -s reload

注意:编写完脚本后加执行权限!

创建定时任务:
执行命令:crontab -e创建定时任务

00 00 * * * /opt/nginx_log.sh &> /dev/null

nginx的压缩功能

当前的nginx默认发布页内容大小:
在这里插入图片描述
为保证实验效果明显,增加index.html的内容大小:
在这里插入图片描述
在浏览器对nginx默认发布页进行访问:
在这里插入图片描述
按F2调出调试按钮,可以看到当前页面内容大小为2.57M,转换内容为2.57M。实际上2.57M的文本页面已经不算小了,每次访问时,相当下载了2.57M的内容,如果内容稍微大一点,无疑访问就会变得特别慢,降低客户体验。
所以,nginx的压缩功能就能很好解决这一问题

配置gzip压缩

编辑nginx配置文件nginx/conf/nginx.conf
在这里插入图片描述gzip on 为打开gzip压缩
gzip_min_length 1:最小压缩长度(单位为kb)小于此值不压缩
gzip_comp_level :压缩等级(1~10)等级越高,压缩能立越强
gzip_types:压缩类型。

编辑玩成后,保存退出。
首先使用检测语法是否正确:

[root@localhost conf]# ./../sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

语法检测正确后再重加载nginx:
在这里插入图片描述

此时,清除浏览器缓存,再次访问nginx的默认发布页,按下F12打开调试页:
在这里插入图片描述
可以看到,此时内容大小依旧为2.57M,转换的大小为69.39KB
成功实现压缩。这也加速了用户访问页面的时间。

设置nginx使用systemd的启动方式

使用源码编辑安装后,每次启动时必须以脚本的方式进行启动。
这里可以修改nginx启动方式为systemctl:
在这里插入图片描述
可以看到,系统自带的服务都会放到/usr/lib/systemd/system

我们自己配置的服务官方不建议放在此目录,建议放到/etc/systemd/system目录

这里首先需要写nginx的启动脚本,可以将Apache的启动脚本当作模板进行就该即可:
在这里插入图片描述
首先将apache的启动脚本复制到/etc/systemd/system

cp /usr/lib/systemd/system/httpd.service /etc/systemd/system/Nginx.service

在这里插入图片描述
编辑完成后,保存退出。
使用 ./../sbin/nginx -s reload重新加载nginx
再 ./…/sbin/nginx -s stop 关闭nginx。

这个时候就能使用systemctl的方式进行启动nginx:
在这里插入图片描述

关于nginx的配置文件

Nginx 的配置文件主要分为4部分:
main (全局设置) -> 此部分设置的指令将影响其它所有设置
server (主机设置) -> 主要用于指定 “主机” 和 “端口”
upstream (负载均衡设置) -> 用于负载均衡location (URL 匹配特定位置的设置)
location (URL 匹配特定位置的设置) -> 匹配网页文件的类型和位置

nginx的常用配置

配置方法都可以在nginx官网的文档中找到

实现后端负载均衡及健康检查

在这里插入图片描述
nginx主机:172.25.5.1
后端web服务器:172.25.5.3、172.25.5.4
编辑配置文件:
在这里插入图片描述
首先使用upstream定义后端服务器主机集群(默认调度算法为轮询)
然后在server字段进行调用

测试:

[root@foundation5 usr]# curl 172.25.5.1
server3
[root@foundation5 usr]# curl 172.25.5.1
server4
[root@foundation5 usr]# curl 172.25.5.1
server3
[root@foundation5 usr]# curl 172.25.5.1
server4
[root@foundation5 usr]# curl 172.25.5.1
server3
[root@foundation5 usr]# curl 172.25.5.1
server4
[root@foundation5 usr]# curl 172.25.5.1
server3

开启nginx的用户及worker进程的数量

在这里插入图片描述
在这里插入图片描述
指定开启nginx的用户及组为nginx,nginx,编辑完成后保存退出

创建 nginx用户及nginx组:

useradd nginx

使用 ./../sbin/nginx -s reload重新加载nginx
查看nginx进程:
在这里插入图片描述
可以看到,开启该进程的用户为nginx,这里我们的虚拟机为单核,设置大于1的worker进程数没有意义。

最大连接数的修改

在这里插入图片描述

可以看到,默认的最大连接数为1024。nginx的最大支持为65535。 但是修改时,要注意此数值应小于系统限制的文件最大打开数(sysctl -a | grep file)。
或者为nginx服务创建nginx用户,在/etc/security/limits.conf添加限制信息:
在这里插入图片描述

注意:当nginx作为反向代理服务器时,此数字须除二(客户端对代理服务器的连接及代理服务器和后端服务器之间的连接)

nginx的一些并发优化

修改网络内核对TCP连接的有关限制

[root@server1 system]# sysctl -w net.ipv4.ip_local_port_range="1024 65535"
net.ipv4.ip_local_port_range = 1024 65535

此修改为临时修改,系统重启后就恢复原来的配置
可通过修改文件的方式进行永久修改:
编辑文件/etc/sysctl.conf
在这里插入图片描述
编辑完成后,使用命令sysctl --system使之生效。

修改限制接受新TCP连接侦听队列的大小

在这里插入图片描述

启用tcp连接timewait快速回收和利用

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_recycle = 1

在这里插入图片描述

使用epoll多路复用IO模型

在这里插入图片描述

开启文件高效传输模式

可防治网络和io阻塞
在这里插入图片描述

限流

限制并发连接

首先在外部进行压侧:10个并发,10个请求

[root@foundation5 ~]# ab -c10 -n10 http://172.25.5.1/index.html
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 172.25.5.1 (be patient).....doneServer Software:        nginx/
Server Hostname:        172.25.5.1
Server Port:            80Document Path:          /index.html
Document Length:        612 bytesConcurrency Level:      10
Time taken for tests:   0.003 seconds
Complete requests:      10
Failed requests:        0
Total transferred:      8390 bytes
HTML transferred:       6120 bytes
Requests per second:    3225.81 [#/sec] (mean)
Time per request:       3.100 [ms] (mean)
Time per request:       0.310 [ms] (mean, across all concurrent requests)
Transfer rate:          2643.02 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:     0    1   0.4      1       2
Waiting:        0    1   0.3      1       1
Total:          1    1   0.4      1       2Percentage of the requests served within a certain time (ms)50%      166%      175%      180%      190%      295%      298%      299%      2100%      2 (longest request)

在nginx主机的nginx日志中可以看到,访问全部成功:

172.25.5.250 - - [13/Aug/2020:14:45:31 +0800] "GET /index.html HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
172.25.5.250 - - [13/Aug/2020:14:45:31 +0800] "GET /index.html HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
172.25.5.250 - - [13/Aug/2020:14:45:31 +0800] "GET /index.html HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
172.25.5.250 - - [13/Aug/2020:14:45:31 +0800] "GET /index.html HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
172.25.5.250 - - [13/Aug/2020:14:45:31 +0800] "GET /index.html HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
172.25.5.250 - - [13/Aug/2020:14:45:31 +0800] "GET /index.html HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
172.25.5.250 - - [13/Aug/2020:14:45:31 +0800] "GET /index.html HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
172.25.5.250 - - [13/Aug/2020:14:45:31 +0800] "GET /index.html HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
172.25.5.250 - - [13/Aug/2020:14:45:31 +0800] "GET /index.html HTTP/1.0" 200 612 "-" "ApacheBench/2.3"
172.25.5.250 - - [13/Aug/2020:14:45:31 +0800] "GET /index.html HTTP/1.0" 200 612 "-" "ApacheBench/2.3"

首先在配置文件中编辑:
在http字段里创建一个内存为10m的区域:

 limit_conn_zone $binary_remote_addr zone=addr:10m;

(不要写在server字段中,方便后边server调用)

在这里插入图片描述

定义解释:新定义访问目录/download/,在访问/download时,每个客户端来源只能建立一个并发连接.
测试:在外部压侧:

[root@foundation5 ~]# ab -c10 -n10 http://172.25.5.1/download/vim.jpg
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 172.25.5.1 (be patient).....doneServer Software:        nginx/
Server Hostname:        172.25.5.1
Server Port:            80Document Path:          /download/vim.jpg
Document Length:        187870 bytesConcurrency Level:      10
Time taken for tests:   0.003 seconds
Complete requests:      10
Failed requests:        7(Connect: 0, Receive: 0, Length: 7, Exceptions: 0)
Non-2xx responses:      7
Total transferred:      569083 bytes
HTML transferred:       567068 bytes
Requests per second:    3575.26 [#/sec] (mean)
Time per request:       2.797 [ms] (mean)
Time per request:       0.280 [ms] (mean, across all concurrent requests)
Transfer rate:          198693.28 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:     0    1   0.2      1       1
Waiting:        0    1   0.1      1       1
Total:          1    1   0.2      1       2Percentage of the requests served within a certain time (ms)50%      166%      175%      180%      290%      295%      298%      299%      2100%      2 (longest request)

可以看到,十次访问只成功了3次。
对比:一次并发,十个请求:

[root@foundation5 ~]# ab -c10 -n10 http://172.25.5.1/download/vim.jpg
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 172.25.5.1 (be patient).....doneServer Software:        nginx/
Server Hostname:        172.25.5.1
Server Port:            80Document Path:          /download/vim.jpg
Document Length:        187870 bytesConcurrency Level:      10
Time taken for tests:   0.003 seconds
Complete requests:      10
Failed requests:        7(Connect: 0, Receive: 0, Length: 7, Exceptions: 0)
Non-2xx responses:      7
Total transferred:      569083 bytes
HTML transferred:       567068 bytes
Requests per second:    3575.26 [#/sec] (mean)
Time per request:       2.797 [ms] (mean)
Time per request:       0.280 [ms] (mean, across all concurrent requests)
Transfer rate:          198693.28 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:     0    1   0.2      1       1
Waiting:        0    1   0.1      1       1
Total:          1    1   0.2      1       2Percentage of the requests served within a certain time (ms)50%      166%      175%      180%      290%      295%      298%      299%      2100%      2 (longest request)
[root@foundation5 ~]# ab -c1 -n10 http://172.25.5.1/download/vim.jpg
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 172.25.5.1 (be patient).....doneServer Software:        nginx/
Server Hostname:        172.25.5.1
Server Port:            80Document Path:          /download/vim.jpg
Document Length:        187870 bytesConcurrency Level:      1
Time taken for tests:   0.011 seconds
Complete requests:      10
Failed requests:        0
Total transferred:      1881030 bytes
HTML transferred:       1878700 bytes
Requests per second:    922.42 [#/sec] (mean)
Time per request:       1.084 [ms] (mean)
Time per request:       1.084 [ms] (mean, across all concurrent requests)
Transfer rate:          169444.09 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:     1    1   0.5      1       2
Waiting:        0    0   0.5      0       2
Total:          1    1   0.5      1       2Percentage of the requests served within a certain time (ms)50%      166%      175%      180%      190%      295%      298%      299%      2100%      2 (longest request)

在一个并发的情况下,所有的访问都成功。

设定的限制生效!

带宽的限制

将访问的带宽限制在30k
在这里插入图片描述

可以看到,在访问时,我们在配置文件中限制的带宽起到了作用

[root@foundation5 ~]# ab -c1 -n10 http://172.25.5.1/download/vim.jpg
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 172.25.5.1 (be patient).....doneServer Software:        nginx/
Server Hostname:        172.25.5.1
Server Port:            80Document Path:          /download/vim.jpg
Document Length:        187870 bytesConcurrency Level:      1
Time taken for tests:   60.129 seconds
Complete requests:      10
Failed requests:        0
Total transferred:      1881030 bytes
HTML transferred:       1878700 bytes
Requests per second:    0.17 [#/sec] (mean)
Time per request:       6012.948 [ms] (mean)
Time per request:       6012.948 [ms] (mean, across all concurrent requests)
Transfer rate:          30.55 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:  6012 6013   0.3   6013    6013
Waiting:        0    0   0.1      0       0
Total:       6013 6013   0.4   6013    6014

限制在单位时间内的连接请求

在http字段中定义:

 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

在这里插入图片描述

  • 在首页index.html下添加limit_req zone=one ;参数(1秒钟只能处理一个请求)。
    reload enginx后再次测试:
[root@foundation5 ~]# ab -c1 -n10 http://172.25.5.1/index.html
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 172.25.5.1 (be patient).....doneServer Software:        nginx/
Server Hostname:        172.25.5.1
Server Port:            80Document Path:          /index.html
Document Length:        612 bytesConcurrency Level:      1
Time taken for tests:   0.003 seconds
Complete requests:      10
Failed requests:        9(Connect: 0, Receive: 0, Length: 9, Exceptions: 0)
Non-2xx responses:      9
Total transferred:      6977 bytes
HTML transferred:       5058 bytes
Requests per second:    3419.97 [#/sec] (mean)
Time per request:       0.292 [ms] (mean)
Time per request:       0.292 [ms] (mean, across all concurrent requests)
Transfer rate:          2330.19 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:     0    0   0.1      0       0
Waiting:        0    0   0.1      0       0
Total:          0    0   0.2      0       1Percentage of the requests served within a certain time (ms)50%      066%      075%      080%      090%      195%      198%      199%      1100%      1 (longest request)

可以看到,之成功了一次请求。限制生效!

  • 设置队列长度:
    在这里插入图片描述
    测试结果:
[root@foundation5 ~]# ab -c1 -n10 http://172.25.5.1/index.html
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 172.25.5.1 (be patient).....doneServer Software:        nginx/
Server Hostname:        172.25.5.1
Server Port:            80Document Path:          /index.html
Document Length:        612 bytesConcurrency Level:      1
Time taken for tests:   9.002 seconds
Complete requests:      10
Failed requests:        0
Total transferred:      8390 bytes
HTML transferred:       6120 bytes
Requests per second:    1.11 [#/sec] (mean)
Time per request:       900.213 [ms] (mean)
Time per request:       900.213 [ms] (mean, across all concurrent requests)
Transfer rate:          0.91 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:     1  900 316.0   1000    1002
Waiting:        0  900 316.0   1000    1002
Total:          1  900 315.9   1000    1002Percentage of the requests served within a certain time (ms)50%   100066%   100075%   100080%   100190%   100295%   100298%   100299%   1002100%   1002 (longest request)
  • 或者添加nodelay参数,只处理队列内的请求:
    在这里插入图片描述
    访问测试结果:
[root@foundation5 ~]# ab -c1 -n10 http://172.25.5.1/index.html
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 172.25.5.1 (be patient).....doneServer Software:        nginx/
Server Hostname:        172.25.5.1
Server Port:            80Document Path:          /index.html
Document Length:        612 bytesConcurrency Level:      1
Time taken for tests:   0.003 seconds
Complete requests:      10
Failed requests:        4(Connect: 0, Receive: 0, Length: 4, Exceptions: 0)
Non-2xx responses:      4
Total transferred:      7762 bytes
HTML transferred:       5648 bytes
Requests per second:    3537.32 [#/sec] (mean)
Time per request:       0.283 [ms] (mean)
Time per request:       0.283 [ms] (mean, across all concurrent requests)
Transfer rate:          2681.32 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       0
Processing:     0    0   0.1      0       1
Waiting:        0    0   0.1      0       0
Total:          0    0   0.2      0       1Percentage of the requests served within a certain time (ms)50%      066%      075%      080%      090%      195%      198%      199%      1100%      1 (longest request)

可以看到,成功6个(队列内5个)

ssl:

首先配置ssl模块:
在这里插入图片描述
接下来添加ssl的证书和key:

[root@server1 conf]# cd /etc/pk
pkcs11/ pki/    
[root@server1 conf]# cd /etc/pki/tls/certs/
[root@server1 certs]# ls
ca-bundle.crt  ca-bundle.trust.crt  make-dummy-cert  Makefile  renew-dummy-cert
[root@server1 certs]# make cert.pem
umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2  ; \
cat $PEM1 >  cert.pem ; \
echo ""    >> cert.pem ; \
cat $PEM2 >> cert.pem ; \
rm -f $PEM1 $PEM2
Generating a 2048 bit RSA private key
..+++
..............................................................+++
writing new private key to '/tmp/openssl.zjdc0y'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn    
State or Province Name (full name) []:Shaanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:westos
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:server1
Email Address []:root@localhost
[root@server1 certs]# ll c
ca-bundle.crt        ca-bundle.trust.crt  cert.pem
[root@server1 certs]# ll cert.pem 
-rw------- 1 root root 3096 Aug 16 10:04 cert.pem
[root@server1 certs]# cp cert.pem /usr/local/nginx/conf/

reload nginx后 测试:
在这里插入图片描述

自动索引

在nginx的httpd服务器下载一些东西时,一般需要将下载的资源路径写在浏览器的url框中,如果路径不全会访问失败。但是一般情况下,我们并不知道download目录中的资源名称,所以,需要加上自动索引的参数:
在这里插入图片描述
此时在访问默认发布页的download目录就能看到资源信息:
在这里插入图片描述

解决在访问nginx中碰到的中文乱码问题

在做自动索引时,有时会遇到中文资源名称乱码的问题,可以通过在http字段里添加utf-8字符集来优化:
在这里插入图片描述

缓存配置

如果在nginx服务器上通常一些不太常变的静态图片,在进行访问时,开启nginx缓存功能就不用每次对nginx的图片进行访问,起到加速的效果i。
配置:
在这里插入图片描述
测试:
在这里插入图片描述
缓存生效!
同时禁掉不必要日志信息:
在这里插入图片描述

禁用在nginx发布目录中的脚本

通常用户可能会上传一些脚本文件到nginx发布目录中,但是当调用执行脚本时,若是一些破坏性的脚本,就会对服务器产生危害,所以,一般会禁掉。

首先在download目录创建一个脚本,并给执行权限:
在这里插入图片描述

chmod +x script.sh

通过页面访问:
在这里插入图片描述

编辑配置文件:
在这里插入图片描述
reload nginx后再次进行访问:
在这里插入图片描述
设定生效!

访问限制

在这里插入图片描述
拒绝访问/download下的所有资源:
测试:
在这里插入图片描述

允许172.25.5.250访问:
在这里插入图片描述
测试:172.25.5.250访问:
在这里插入图片描述
其他主机:

 [root@server2 opt]# curl 172.25.5.1/download
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/</center>
</body>
</html>

限制某个ip的访问

在这里插入图片描述
当ip为172.25.5.250的主机访问默认发布页时直接返回403。
测试结果:
在这里插入图片描述

重定向

防止域名恶意解析到服务器ip

在这里插入图片描述
目前可以通过ip可以对服务器进行访问,但是一般情况下,为了防止恶意的解析,消耗流量,不允许用户直接通过ip对服务器进行访问。

对首页进行如下设置:
在这里插入图片描述
如果直接使用ip进行访问,直接返回500错误状态码。

reload nginx后,测试:
在这里插入图片描述

  • 也可以对其重定向:
    首先添加虚拟主机,别名为www.westos.org:
    在这里插入图片描述
    在主页设定当以ip的当时对服务器进行访问时,将其重定向到www.westos.org:
    在这里插入图片描述
    reload nginx后,测试:
    首先在测试主机上添加解析www.westos.org
    在这里插入图片描述
[root@foundation5 usr]# curl -I 172.25.5.1
HTTP/1.1 301 Moved Permanently     ##状态码301:重定向
Server: nginx/
Date: Sun, 16 Aug 2020 01:37:00 GMT
Content-Type: text/html
Content-Length: 163
Connection: keep-alive
Location: http://www.westos.org

80重定向到443

在这里插入图片描述
在这里插入图片描述

测试:

[root@foundation5 usr]# curl -I www.westos.org
HTTP/1.1 301 Moved Permanently
Server: nginx/
Date: Sun, 16 Aug 2020 02:25:42 GMT
Content-Type: text/html
Content-Length: 163
Connection: keep-alive
Location: https://www.westos.org/

网页重定向

首先创建一个虚拟主机,bbs.westos.org:
在这里插入图片描述
创建其发布目录和发布页面,发布页:
在这里插入图片描述
重定向:
在这里插入图片描述
测试:

[root@foundation5 usr]# curl -I www.westos.org/bbs
HTTP/1.1 301 Moved Permanently
Server: nginx/
Date: Sun, 16 Aug 2020 02:49:42 GMT
Content-Type: text/html
Content-Length: 163
Connection: keep-alive
Location: http://bbs.westos.org

bbs的重定向成功!但是在访问bbs后的页面时不会重定向:

[root@foundation5 usr]# curl -I www.westos.org/bbs/index.html
HTTP/1.1 404 Not Found
Server: nginx/
Date: Sun, 16 Aug 2020 02:51:37 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 147
Connection: keep-alive

在重定向时,需要接收后边的内容:
在这里插入图片描述
测试:

[root@foundation5 usr]# curl -I www.westos.org/bbs/index.html
HTTP/1.1 301 Moved Permanently
Server: nginx/
Date: Sun, 16 Aug 2020 02:56:50 GMT
Content-Type: text/html
Content-Length: 163
Connection: keep-alive
Location: http://bbs.westos.org/index.html

在这里插入图片描述

防盗链

盗链

盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。

在server1的默认发布页放上资源图vim.jpg
能够正常访问:
在这里插入图片描述
在server3上的nginx发布目录中,新建文件test.html:

<html>
<body>
<img src="http://www.westos.org/vim.jpg">
</body>
</html>

启动nginx,测试:
在这里插入图片描述
可以看到,server3成功盗链。

防盗连

编辑资源nginx主机配置文件:
在这里插入图片描述
reload nginx后,测试:
在这里插入图片描述

成功防盗链,一般情况下,我们也可以对其进行重定向,定向到不属于我们站点的地址或者定向到自己的公司宣传页面反手为自己打一波广告。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. quartus II中的定义全局常量时,明明声明了,但是在程序中用时说没有声明。

    这个是一个基础的语法问题。div_time应该在程序使用中写成div_time(其中是键盘1左边那个)。...

    2024/4/30 0:49:55
  2. golang中的字符串拼接

    1 +拼接字符串 由于golang中的字符串是不可变的类型,因此用 + 连接会产生一个新的字符串对效率有影响。 这种方式实现的字符串拼接过程最简单,在实际中这种拼接方式在应对少量拼接时,效率还是不错的。 s1 := "hello" s2 := "world" s3 := s1 + s2 fmt.P…...

    2024/5/7 23:45:42
  3. 查出cpu和mem占用最高并且超过90%的发送为view用户的mail邮件

    #!/bin/bash #分别查出cpu和mem占用最高并且超过90%的发送为view用户的mail邮件 rm -rf toph.txt toph2.txt topcpu=top -cn1|tee toph.txt|awk NR==8 topmem=top -Mn1|tee toph2.txt|awk NR==8 cpu1=echo ${topcpu}|awk {print $10} mem1=echo ${topmem}|awk {print $11} user…...

    2024/5/7 12:42:05
  4. 【论文阅读】10-Automatic Homographic Registration of a Pair of Images, with A Contrario Elimination of Out

    【论文阅读】10-Automatic Homographic Registration of a Pair of Images, with A Contrario Elimination of Outliers0、方法参考1、ORSA (Optimized RANSAC)2、ORSA (Optimized RANSAC) + Homography3、其他3.1、Duplicates Removal3.2、Failure :very few matches. 0、方法…...

    2024/4/30 0:49:41
  5. Java:面向对象全面总结

    Java面向对象全面总结 面向对象 今天我们就来聊聊什么是面向对象。 不知道大家有没有看过一个小品,就是宋丹丹说把大象装进冰箱要几步。然后宋丹丹再说只要三步。第一步:打开冰箱门。第二步:把大象装进冰箱。第三步:关上冰箱门。她是这么说的,对吧!那我们别管是怎样把大象…...

    2024/5/8 2:00:25
  6. 414-简单-第三大的数

    思路:先找到最小的元素,给数组赋值,然后依次找到前三大的元素 int thirdMax(int* nums, int numsSize){int temp[3] = {0};temp[0] = nums[0];for (int i=1;i<numsSize;i++){if(nums[i]<temp[0]) temp[0] = nums[i];}temp[1] = temp[0];temp[2] = temp[0];for (int i=…...

    2024/4/30 0:49:34
  7. SpringMVC常见注解的使用

    文章目录1. RequestParam:2. RequestBody:3. PathVariable:4. ModelAttribute: 1. RequestParam:解决请求参数绑定时 请求参数名 不一致的情况。<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><t…...

    2024/4/30 0:49:29
  8. Vue.js入门篇(一)——常用指令介绍

    1.什么是Vue? 1.1 渐进式框架 看了官方文档,你一定知道vue是一个“渐进式框架”。框架的意思肯定明白,那么什么是"渐进式“呢?渐进式:一开始不需要你完全掌握它的全部功能特性,可以后续逐步增加功能。 感谢 @SSXfont 的举例场景1: 如果你的技术团队技术选型比较保守…...

    2024/4/30 0:49:25
  9. js进阶知识—函数

    2020-8-10~8-16 函数部分遗漏的知识将在今后学习之中慢慢总结。函数: 1-1声明式(Function Declaration): function fn() {console.log(我是函数声明式);}// fn();两种调用方法fn.call();1-2表达式(Function Expression): var fn = function(aru) {console.log(aru);};…...

    2024/4/30 0:49:21
  10. 树莓派4和LabVIEW2020的连接介绍(1)——树莓派4的配置流程

    写下这篇文章的目的是对这次解决问题的过程和方法进行记录,供自己和其他有同样困难的朋友早日解决所遇到的问题。楼主在查资料时候没有碰到正面或者直接解决这个问题的资料,所以解决后写在这里,希望以后的朋友不会再遇到楼主当时的窘境。欢迎友好的交流和讨论。 一.树莓派4的…...

    2024/4/30 0:49:19
  11. Python opencv图像处理基础总结(一)

    学过的知识,会过时、会遗忘,但在努力过程中学会的处事态度和做事习惯,都会留在骨子里,变成我们的一部分。Open Source Computer Vision Library,OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运…...

    2024/4/30 0:49:18
  12. 吴恩达课后编程作业Course 4 - 卷积神经网络 - 第二周作业

    本文参考的博客为https://blog.csdn.net/u013733326/article/details/80250818原博客中作者用的是tf1.x版本的,本文用的是tf2.x版本1 - Keras 入门 - 笑脸识别本次我们将:学习到一个高级的神经网络的框架,能够运行在包括TensorFlow和CNTK的几个较低级别的框架之上的框架。看…...

    2024/4/30 0:49:09
  13. 数据分析——归一化「随笔」

    归一化Min-Max Normalization x’ = (x - X_min) / (X_max - X_min)平均归一化 x’ = (x - μ) / (MaxValue - MinValue)(1)和(2)有一个缺陷就是当有新数据加入时,可能导致 max 和 min 的变化,需要重新定义。 非线性归一化对数函数转换:y = log10(x) 反余切函数转换:y …...

    2024/5/6 11:14:02
  14. windows下解决matplotib中文乱码问题

    matplotlib默认是不支出中文的,在window系统下如何设置使其可以显示中文? 参考文章...

    2024/4/30 0:49:02
  15. 调用链选型之Zipkin,Pinpoint,SkyWalking,CAT

    https://www.jianshu.com/p/0fbbf99a236e建议选择SkyWalking...

    2024/4/30 0:48:57
  16. 趣说 TCP/IP 分层模型 以及通信过程

    先简单介绍一下TCP/IP与OSI参考模型...

    2024/4/30 0:48:55
  17. Linux下配置npm存放路径,解决权限问题

    Linux下配置npm存放路径,解决权限问题参考文章: (1)Linux下配置npm存放路径,解决权限问题 (2)https://www.cnblogs.com/webgis-mc/p/10449736.html 备忘一下。...

    2024/4/30 0:48:49
  18. SELinux 的3种工作模式Disabled、Permissive、Enforcing

    文章目录SELinux是什么SELinux的作用安装SELinuxSELinux 3种工作模式Disable[关闭]工作模式Permissive[宽容]工作模式Enforcing[强制]模式SELinux 3种工作模式切换setenforce 切换模式SELinux 的运行模式的开启和关闭 SELinux是什么 SELinux,Security Enhanced Linux 的缩写,…...

    2024/4/30 0:48:46
  19. Java:面向对象的语言

    Java面向对象 面向对象 今天我们就来聊聊什么是面向对象。 不知道大家有没有看过一个小品,就是宋丹丹说把大象装进冰箱要几步。然后宋丹丹再说只要三步。第一步:打开冰箱门。第二步:把大象装进冰箱。第三步:关上冰箱门。她是这么说的,对吧!那我们别管是怎样把大象装进冰箱…...

    2024/4/29 1:10:05
  20. HDU - 5102

    题目链接:HDU - 5102本来想直接点分治的。但是因为K很小,所以我们可以直接拓展。先用一条边,然后由一条边拓展到两条。 因为我们是单向拓展的,所以有些会拓展不到,所以我们对一条边弄两个方向,最后除以2即可。 点分治的话,就统计每个长度的次数,然后从小往大扫即可。AC…...

    2024/5/3 21:39:16

最新文章

  1. 测试平台开发:Django开发实战之注册界面实现(下)

    1、 评论和用户建立关联 1&#xff09;修改model: 软关联还是硬关联默认值是什么关联方被删除怎么办如何根据评论找到用户如何根据用户找到评论 然后执行命令&#xff1a; pdm run M pdm run init 这样在表里面就会多一个user_id的字段 2&#xff09;修改视图&#xf…...

    2024/5/8 9:04:30
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践

    腾讯云容器与Serverless的融合&#xff1a;探索《2023技术实践精选集》中的创新实践 文章目录 腾讯云容器与Serverless的融合&#xff1a;探索《2023技术实践精选集》中的创新实践引言《2023腾讯云容器和函数计算技术实践精选集》整体评价特色亮点分析Serverless与Kubernetes的…...

    2024/5/5 8:50:37
  4. GIS与数字孪生共舞,打造未来智慧场景

    作为一名数字孪生资深用户&#xff0c;近日我深刻理解到GIS&#xff08;地理信息系统&#xff09;在构建数字孪生体中的关键作用。 数字孪生技术旨在构建现实世界的虚拟镜像&#xff0c;而GIS则是这一镜像中不可或缺的空间维度框架和导航灯塔。数字孪生的核心是通过数字化方式…...

    2024/5/7 15:03:20
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/7 19:05:20
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/7 22:31:36
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/8 1:37:40
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/7 14:19:30
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/8 1:37:39
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/7 16:57:02
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/7 14:58:59
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/7 1:54:46
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/7 21:15:55
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/8 1:37:35
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/7 16:05:05
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/7 16:04:58
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/8 1:37:32
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/7 16:05:05
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/8 1:37:31
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/8 1:37:31
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/7 11:08:22
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/7 7:26:29
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/8 1:37:29
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/7 17:09:45
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57