自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Wang的专栏

Name: wangqiangqiang | Email : johnnynode@gmail.com | Github : github.com/johnnynode

  • 博客(1173)
  • 收藏
  • 关注

原创 Nginx: 基于多网卡,端口,域名的虚拟主机实现

这里直接配置 nginx,下面是核心配置。1 ) 基于 多IP 的虚拟主机。2 ) 基于 多端口 的虚拟主机。3 ) 基于 域名 的虚拟主机。2 )Nginx 核心配置。准备好 host: $1 ) 网卡和IP配置。检查,重载配置,并访问。

2024-09-03 14:39:25 1332

原创 Nginx: 模块化管理编译安装与配置结构

upstream模块, 就是实现了反向代理的功能,只要有这个模块 Nginx 就能够将一个客户端的用户请求真正的转发到一个后端的一个服务器,可能是具体的应用服务器,从而它还能够实现在后端服务器结束有具体的响应内容之后,从后端的服务器上读取响应的内容,从而继续封装返回给客户端,对于upstream模块来说,其实也是一种特殊的handler模块,只不过,这个响应模块它不是自己来处理的而从后端服务器上读取的。主要是三大模块,第一个是events模块,第二个是http模块,第三个是server模块。

2024-09-03 12:44:36 871

原创 Nginx: 配置文件重载的原理和热部署

注意,新版本的nginx的目录结构需要与旧版一致。假设主目录是 /opt/nginx 下 $reload 重载配置文件的流程。2 )实际演示升级Nginx程序。1 )热部署的升级流程。

2024-09-02 20:28:56 693

原创 Nginx: 进程结构和信号量管理

通过 kill 命令,可以给某个进程PID发送很多的信号量,通常,直接使用 kill pid 的时候。可见, kill -9 可以发送一个 SIGKILL 的信号,它不管当前进程处于什么状态,无条件终止。在Linux 操作系统中,对于进程管理是通过信号量来进行管理的, 比如说我们通常使用的q命令。2.1 使用信号量管理 master 和 worker。以上可以看到,现在大概是有 64 种信号量。2 )使用信号量管理 Nginx。1 )Linux 的信号量管理。常用信号量, 参数含义。

2024-09-02 11:30:20 1097

原创 Nginx: TCP建立连接的优化和启用Fast Open功能

因为 /proc 下都是临时文件,改了临时文件会立即生效,但是重启后就变回去了。以上都是默认值,看起来值比较小,如果要更改,不能直接更改上述配置文件。现在,我们可以去修改 nginx 的 backlog 队列。1.3 2011年 Google 提出的TFO的优化。1.1 最初RFC中实现 TCP 协议的状态如下。1 ) TCP 的 Fast Open。2 )实际环境开启 Fast Open。通过这个命令,查看系统内核参数 $1.2 RFC 优化的过程。我们现在可以修改 $检查配置是否生效,$

2024-09-01 21:59:08 1370

原创 Nginx: 性能优化之提升CPU效率以及TCP的三次握手和四次挥手

们从这种宏观上来说,多个进程,它是一个并行执行的,但从CPU的角度,同一时刻只能干一件事。整个CPU就是在循环往复的去执行每一个进程,在操作系统中,所有进程都会被分配一些时间片。比如,Kafka 进程被调度到CPU上执行,执行完了以后,会拿下来,到底它去执行多久。如果说,这个进程的优先级是比较高的话,它相应的得到的CPU的执行的时间片就会多一些。对CPU调度的时候,它在某一个时刻,它只能有一个会被调度到CPU上。有一个大的原则,比如,某一个进程的优先级是最高的。

2024-09-01 17:31:26 1478

原创 Nginx: 使用KeepAlived配置实现虚IP在多服务器节点漂移及Nginx高可用原理

2台 linux , 一主一备 * 节点1:192.168.184.30 CentOS 7 Master * 节点2:192.168.184.40 CentOS 7 Backup * VIP 192.168.184.50- 安装 KeepAlived, $ `yum install keepalived` * 注意,安装好yum源,base 源就有这个软件 * 两台都执行安装- 关闭selinux 和 防火墙 * $ `setenforce

2024-08-31 22:39:56 1679 1

原创 Nginx: 高可用和与虚拟路由冗余协议VRRP原理以及KeepAlived软件架构

假定是这样一个最传统的一个CS模式的一个客户服务器模式 * 这里有用户和一台服务器 * 服务器可能是mysql, 也可能是webserver, 或其他服务器- 想实现服务可用的一个三要素 * 1.1 ) server 需要公网的ip地址以及申请一个域名 * 1.2 ) 需要服务软件和相关端口 * 1.3 ) 存在对应的数据,如: * webserver需要css, html, js 等 * sqlserver需要库和表

2024-08-31 13:43:23 1000

原创 Nginx: 搭建HTTPS服务器(私有CA服务器的搭建,Nginx公私钥生成,证书签发和配置)的过程

现在我们正式的去配置一个私有的CA服务器真正的CA服务器在实际的生产中可能并不会用在对公网的一些HTTPS服务中,通常会去买一些真正的SSL证书包括阿里云或者是腾讯云等等,上面都有一些免费的SSL证书这些证书也是向所谓的一个CA服务商来购买的为了更好理解整个HTTPS证书的一个申请签发的一个流程自己去搭建这样一个CA服务器利用Nginx的服务器上去生成一个证书并且让CA服务器让Nginx生成的这样一个证书正式生效。

2024-08-30 18:37:42 2203

原创 Nginx: https解决安全问题

2 )报文的完整性无法验证,可能被黑客篡改。1 )数据使用明文传输,可能被黑客窃取。2.4 CA 证书申请过程中做的事情。1 )http协议存在的问题。1.4 https 加密原理。2.3 数字签名的合法性验证。2 ) https 原理。1.3 关于非对称加密算法。2.2 数字签名的校验流程。2.1 数字签名的生成。1.2 关于对称加密。

2024-08-30 12:54:14 1054

原创 Nginx: 第三方清除模块ngx_cache_purge及其相关配置

3.2 Nginx 配置示例 192.168.184.240。3.1 应用服务器, 模拟 192.168.184.20。1 ) ngx_cache_purge 模块功能。2 )ngx_cache_purge 指令。

2024-08-30 10:32:47 364

原创 Nginx: 缓存, 不缓存特定内容和缓存失效降低上游压力策略及其配置示例

在负载均衡的过程中,有一个比较重要的概念,就是缓存利用缓存可以很好协调Nginx在客户端和上游服务器之间的速度不匹配的矛盾从而很好的解决整体系统的响应速度如果用户需要通过Nginx获取某一些内容的时候,发起一个request请求这个请求到了Nginx之后,静态内容会直接返回,动态内容会转发至应用程序服务器后端应用服务器再处理完这样一个请求器,会封装响应包体,再返回给我们的NginxNginx 收到 response 包体之后,再一并的把这些内容返回给我们的用户。

2024-08-29 17:36:56 1467

原创 Nginx: 负载均衡场景下上游服务器异常时的容错机制

Post请求,它就是一个非幂等的 http 请求方法,因为可能会在后端服务器上创建一些资源。所谓幂等的请求, 是指这个请求发出去之后,无论请求多少次,得到的结果通常是一致的。默认值: proxy_next_upstream error timeout;非幂等请求,可能对服务器造成不可预见的一些错误,在某些场景下是很危险的。2 )proxy_next_upstream_timeout 指令。3 )proxy_next_upstream_tries 指令。1 )proxy_next_upstream 指令。

2024-08-28 19:39:24 1579

原创 Nginx: 负载均衡基础配置, 加权轮序, hash算法, ip_hash算法, least_conn算法

其实, ip_hash 指令是为了解决Nginx和后端应用程序服务器的一个 session 保持的。2.1 应用服务器 (使用 nginx 模拟),比如当前ip地址为:192.168.184.20。对于固定的客户端来说,使用ip hash这样一种负载运用算法来进行 session 保持。对应到服务器端的时候,会有 session 信息, 对于不同的用户来说是不同的。它其实对出的一个应用场景,也是对于这种 session 保持的解决而生的。1 ) ip_hash 指令。语法:ip_hash。

2024-08-28 17:39:03 1921

原创 Nginx: 代理场景下Nginx更改发往上游应用服务器的请求

5.1 上游应用服务器,这里简化,使用 nginx 来模拟, 假设应用服务器ip: 192.168.184.20。现在,某一个客户端请求中间这个 Nginx代理服务器,假设客户端配置好了本地 hosts。3.2 proxy_pass_request_header 指令。1 ) 一个HTTP请求过来以后,它包含了哪些信息。2.2 proxy_http_version 指令。3.1 proxy_set_header 指令。2 )对请求行信息的更改方法。3 )对请求头的修改指令。4 )对请求包体修改指令。

2024-08-28 05:45:00 1369

原创 Nginx: 代理场景下Nginx接收用户请求包体的处理

4.3 请求体大于缓存缓存大小 (这里不能大于 client_max_body_size 的大小)5 ) client_body_in_single_buffer 指令。7 )client_body_in_file_only 指令。6 ) client_body_temp_path 指令。1 )proxy_request_bufering 指令。2 )client_max_body_size 指令。8 )client_body_timeout 指令。配置成 off 的要求。配置成 off 的好处。

2024-08-27 19:18:48 877

原创 Nginx: 反向代理之upstream模块以及完整配置反向代理示例

也就是说在一个时刻内,Nginx到上游服务器的空闲的长连接是16个,所谓空闲的长连接就是这个长连接TCP连接接建立着,但是上面没有请求去发送,但这就是空闲的长连接。所以说我们的keepalive后面跟一个connection的这样一个参数,就定义了Nginx和后端的上游服务器可以开启的长连接的一个空闲长连接的最大数量。启用长连接的情形下的话,有很多的并发请求都调度给某一台上游服务器,上游服务器处理完之后,结果都返回给Nginx了。2 )配置示例 proxy.conf。示例:keepalive 16;

2024-08-27 12:33:17 953

原创 Nginx: 反向代理和动静分离概述

从而将动态请求分配给应用服务器,由应用程序服务器来进行处理, 处理完之后再返回给Nginx。当用户的请求到达Nginx的时候,Nginx可以反向代理跟后端的应用服务器进行交互。Nginx 和 应用程序服务器交互的时候,它可以依据哪一些协议来进行工作。大致可以把用户来的流量分为从四层和七层这样一个角度来说。静态资源响应能力很强,动态资源需要业务逻辑计算。3 )Nginx作为反向代理可支持的协议。一台不够,可以多扩展几台。并发请求小,前后端耦合。1 )反向代理的模型。2 )反向代理的优势。

2024-08-26 19:45:00 957

原创 Nginx: 配置项之autoIndex模块与Nginx变量

通过Nginx变量,有助于去定制我们的log文件,可以对各种用户行为,甚至是Nginx的运行的一些性能参数,进行一个更好的一个分析。比如说,Nginx的版本号, 以及Nginx 启动了多个worker子进程的时候,请求被哪个worker子进程处理。这个时候 Nginx 内部也会产生一些相关的变量,这部分变量,叫做Nginx 的内部变量。从一个用户的一个请求处理流程来看,被Nginx处理完成之后,返回给我们的用户。除去上述四个阶段之外,Nginx自身的运行过程中,它也会产生一些相关的变量。

2024-08-25 20:29:57 878

原创 Nginx: 配置项之rewrite模块中的return指令和rewrite指令以及if指令

示例:rewrite /images/(.*.jpg)$ /pic/$1;将images下的jpg文件重写到pic目录下的jpg文件。配置示例 rewrite_if.conf,假设我们的Nginx 主机的ip为: 192.168.184.240。用于对某一些条件进行判断,比如说可以根据某一些变量的值的不同,对 url 进行一个不同的处理。上下文: server 、location、if。上下文:server、location、if。rewrite 指令中的 flag。condition 用法。

2024-08-25 05:52:07 1085

原创 Nginx: 配置项之access模块、auth_basic模块、auth_request模块

curl curl http://192.168.184.20:8080/auth.html -I 返回。curl http://192.168.184.20:8080/auth.html 返回结果如下。3 )生成密码文件工具。

2024-08-23 20:41:02 1103

原创 Nginx: 配置项之http模块connection和request的用法以及limit_conn和limit_req模块

比如说我们在这儿,至于去引用的limitIQ我们都知道我们的IQ定义status,我们上面是返回的这个五零三,我们在这以示区别,我们让它返回五零四,好吧,继续我们的limitREQ还有什么呀?ok那接下来我们给大家演示一下啊,呃我们还接着上一节的我们这个配置文件,我们直接给大家做展示啊,户下的con零x,还是我们先在这儿去定义我们这个root是吧?第一次没关系,第二次肯定哎,我们在这没有记录进去,我们的这个啊嗯不对,这个时候我们在来给它啊,因为我们在这没定义我们的日志啊,我们再来引用一个日志吧。

2024-08-23 19:45:00 1880

原创 Nginx: 配置项之root和alias的区别, 深入理解location, 以及stub_status模块的用法

访问:http://www.nginx-test.com/match_all/match.html 显示 match page。访问:http://www.nginx-test.com/match_all 显示 match_all page。访问:http://www.nginx-test.com/bbs 显示 bbs page。访问:http://www.nginx-test.com/1.jpg 显示 1.jpg。3 ) 理解 location 中的 URL 结尾的反斜线。2 )指令中匹配规则的优先级。

2024-08-22 22:32:34 922

原创 Nginx: 配置项之server_name指令用法梳理

基于域名的虚拟主机,它是通过什么来进行区分不同的虚拟主机呢?可以有多个server模块通过指定不同的server_name来区分不同的那个虚拟主机可以理解成不同的一个网站域名。

2024-08-22 15:55:39 629

原创 Nginx: 配置项之events段核心参数用法梳理

好的,嗯,这就是我们还没启动我们的NDX啊,我来启动一下我们的NGX啊OBDNGX实定下的NGX好,这个时候我们就启动了啊,这个时候我们的NGX就启动了。那好,那我们在我们的ppt中啊,把这个对应的给删掉啊,要不发现不是用在这个events当中了,而是用在我们的man端中了,好删掉。那接下来最后我们比如说我们就打开这样一个啊,比如说motx代表,我们设置成啊啊,它它主要的一些配置,就这几个啊,这五个是吧?哦,那我们就这讲的有问题啊,接下来改一下,我们需要把这个捞翻啊,三个啊放到这里。

2024-08-22 12:30:42 953

原创 Nginx: 配置项之main段核心参数用法梳理

我们了解下配置文件中的一个全局段,有哪些配置参数,包括后面的 events 字段,有哪些配置参数这里面也有一些核心参数, 对于我们Nginx运行的性能也是有很重要的帮助我们现在首先关注整个 main 段的一个核心参数用法所谓 main 段,是指在 nginx.conf 配置文件中,除了有 events 字段,还有 http 段在此两个段之外的一些段,我们都把它称为 main 段,也就是我们的核心段, 如下前面的这些配置信息,并没有包含在某一个段中,它直接写在我们整个配置文件中。

2024-08-21 21:15:33 922

原创 Nginx: 体系化知识点梳理

我们需要对 Nginx 要有体系化的一个认识对 Nginx 自身来说,它是作为一个中间件的,只要是中间件,它必然会涉及到前端和后端对于 Nginx 来说,它是需要协调整个前后端的一个组件那对于中间件来,我们要理解整个外部系统前端和后端是如何进行交互的我们一个用户请求过来以后,是如何被前端处理到后端以后,如何被我们的应用程序处理处理完之后再返回给我们用户的还有就是 Nginx 的部署和调优第一个层次是使用 Nginx 进行一个简单的配置去把它用起来第二个层次是需要深度优化。

2024-08-20 20:45:07 1172

原创 低代码: 关于Test Driven Development - 测试驱动开发组件与测试示例

我们根据一个个的测试去完成代码的实现,让一个个的错误的测试,经过代码的洗礼变成一系列的通过。这里测试文件 ColorPicker.spec.ts 的大致结构如下,我们分了3个case。正如其他类型的 元素,有两个和值的改变相关的事件,input 和 change。之前,我们都是先写好代码,然后把测试用例程序一个个补上去的,使用TDD正好是相反的。点击之后,它会弹出一个框出来,通过上图,就可以进行一个需求的分析。这种方式和我们平常的开发方式相比,有什么优势和劣势,可以思考一下。2 )采用 TDD 的动机。

2024-08-20 18:33:55 193

原创 低代码: 组件库测试之全局组件库与第三方模块的测试及Vue Store的测试

在官方文档中没有找到具体这个实现,而是在 (vuejs/vue-test-utils-next/issues/196)[https://github.com/vuejs/vue-test-utils-next/issues/196] 这个 issue 中。现在第二个, 是模拟store, 这个store从 useStore() 调用这个钩子函数来的。如果,我们测试的 wrapper 也提供一种机制,可以将store挂载到我们的实例上。第二种方法,是另辟蹊径将测试的 wrapper 灌注了真实的store。

2024-08-19 13:10:14 200

原创 低代码: 组件库测试之渲染和元素获取,触发事件,更新表单,验证事件以及异步请求

触发事件(是click也好,是input也好,让它触发对应的事件)再次对测试用例进行添加更新表单和事件触发,验证事件,关键代码。还是基于之前,修改 HelloWorld.vue 组件。回到测试用例 example.spec.ts 关键代码。渲染组件(怎样将一个组件渲染到测试用例里面)example.spec.ts 修改测试。2 ) 测试触发事件,更新表单和验证事件。修改 HelloWorld.vue 组件。example.spec.ts 测试。HelloWorld.vue 组件。Hello.vue 组件。

2024-08-17 12:15:47 197

原创 低代码: 组件库测试之Vue环境下的测试工具以及测试环境搭建

提供特定的方法,在隔离的话环境下,进行组件的挂载,以及一系列的测试。特别注意要使用 版本 2.0.0 以上。

2024-08-14 22:09:07 198

原创 低代码: 组件库测试的必要性以及Jest测试工具中的异步,mock工具

鉴于国内情况特殊,我们并不推荐,对于一个完善的组件库产品,我们倾向于对其进行编写单元测试。以上场景1 不会测试通过,场景2, 3, 4, 5可通过。先看下 mockImplementation 这个API。新建 user.js, 用于测试手动 mock。现在我们来测试 user.js 模块, 参考。再来看下 mockResolvedValue。再来看下 mockReturnValue。之后修改 mock.test.js。编写 mock.test.js。2 )测试在国内被严重忽视。1 )Jest的特点。

2024-08-13 20:03:49 323

原创 低代码: 编辑器核心功能实现

编辑器页面主要有三个部分,为左中右结构左侧为组件模版库,中间为画布,右侧是设置面板和后端相关的暂不讨论 - 预览 发布 等左侧是预设各种组件模版并进行添加中间是使用交互的手段更新元素的值右侧是使用表单的手段更新元素的值也就是说,左边是预置的组件列表,可以点击或拖动进入中间的画布中间的画布,就是编辑器的核心,可以进行交互,元素可以拖动,选中在中间的画布选中一个元素,当前元素就会高亮,右侧对应该元素的属性等都会出现来方便做元素的调整。

2024-08-11 19:20:55 95

原创 低代码: 开发难点分析,核心技术架构设计

比如说拖动改变位置,最终拖动的过程中也是触发对应的change 事件去用相同的逻辑对值进行更新。将属性映射到表单,点击画布中的某个组件需要将该元素的属性以不同表单的形式展示到右侧。这样 store 完成更新,元素的 props 发生更新,那么整个数据流动就完成了。其实画布中的更新也是采用发射事件的方式对store 的某些值进行更新。当 change 发生的时候,我们能够知道是哪个元素的哪个属性。这个时候我们在对应的组件当中发射出一个事件,change。除了表单的更新,还要说一下画布中的交互更新。

2024-08-05 22:22:27 266

原创 低代码: 系统开发准备之确定一般开发流程,需求分析,复杂度分析,标准开发流程

低代码系统开发之前,我们首先要进行一些准备我们首先知道我们软件开发的一般流程同时,我们还要知道,我们整个系统平台的需求如何之后,我们要基于需求进行设计,包含UI设计与系统架构设计。

2024-08-05 18:28:04 366

原创 低代码: 技术实现概述

低代码或无代码开发是一种软件开发方法它允许开发者通过图形用户界面和少量的手动编码来快速构建应用程序这种方法极大地简化了传统的软件开发过程,减少了编写原始代码的需求并缩短了从概念到部署的时间,低代码全栈开发是一种强大的工具它让软件开发变得更加高效、灵活且易于访问尤其适合那些希望快速推出产品并保持敏捷迭代的团队。

2024-08-04 18:27:21 368

原创 Go: IM系统分布式架构方案 (6)

注意,这里在 server 192.168.0.102;这两台服务器上启动 chat.exe 程序。需要提前 go build 并进行相关部署,此处不在赘述,下面会有说明。代码实现解决,ctrl/chat.go。常见 nginx 反向代理方案。1 )windows 下。2 ) 局域网通信协议。1 ) 使用消息总线。3 ) 实现调度应用。2 )Linux 下。

2024-07-21 17:38:34 757

原创 Go: IM系统接入ws进行消息发送以及群聊功能 (5)

在即时通讯(IM)系统中,实现多媒体消息(如文本、表情包、拍照、图片、音频、视频)的实时传输是一项核心功能随着HTML5和WebSocket技术的发展,现代Web应用能够支持更高效、更实时的通信方式本文将详细探讨如何使用Go语言结合WebSocket技术,在IM系统中实现多媒体消息的发送和接收。

2024-07-20 16:44:22 916

原创 Go: IM系统显示好友列表和群 (4)

在即时通讯(IM)系统开发中,好友列表和群组管理是两个核心功能,它们为用户提供了便捷的交流平台使用Go语言(通常简称为Go)来构建这些功能,可以充分利用其高并发、简洁易读以及强大的标准库支持等优势本文将概述如何使用Go语言设计和实现一个IM系统中的好友列表显示和群组管理功能。

2024-07-19 18:32:16 483

原创 Go: IM系统基于xorm实现简单的注册和登录功能 (3)

IM系统允许用户通过网络实时发送和接收消息它通常包括用户注册、登录、消息发送、接收、存储以及用户状态管理等核心功能其中,登录功能是用户访问IM服务的第一步,它确保了系统的安全性和用户数据的准确性。

2024-07-19 05:15:00 1727

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除