自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 Nginx(十四) 配置文件详解 - 负载均衡(超详细)

客户端一旦发送了请求头中带有 "Authorization"字段且对应值以 "Negotiate(协商)"或 "NTLM(NTLM)"开头的请求,那么该上游服务器就会与客户端进行连接绑定。正常情况下,尚未绑定到特定服务器的客户端请求传递给由配置的负载均衡方法选择的服务器,而带有此 cookie 的其他请求将被传递到指定的服务器。需要特别注意的是,该指令并不限制nginx工作进程可以与上游服务器建立连接的总数,但connections参数应设置得足够小,以便上游服务器也能处理新建立的连接请求。

2023-12-29 01:15:41 940

原创 Nginx(十三) 配置文件详解 - 反向代理(超详细)

默认设置是60秒,但并不是说非要等60秒后才反馈连接建立失败,因为Nginx与后端代理服务器建立连接时,也是通过TCP协议建立的连接,那么就会受内核参数net.ipv4.tcp_syn_retries的影响,如果我们把syn_retries的次数配置的较小(默认配置是5次,大约相当于180秒),Nginx重传SYN报文的次数达到上限并等待完成后,有可能总耗时都不到60秒,此时照样会反馈连接建立失败。设置是否开启代理缓存锁。临时文件的最大大小由 proxy_max_temp_file_size 指令设置。

2023-12-29 01:15:08 2096

原创 Nginx(三) 配置文件详解 - 基础模块(超详细)

声明:写这篇博文一是为了加深自己对Nginx 的配置理解,二是为了方便粉丝们工作需要。部分配置我也没有使用过,用过的配置我都会在下面贴入测试结果,未使用过的配置可能会解释错误,如有错误希望大家及时留言,以后还会根据自己对Nginx的理解不断更新这部分内容。本来想在一篇文章中介绍完所有配置用法,但写着写着发现文章篇幅越来越长,码字时都开始卡顿了,电脑不行吖,所以只能拆分开来写。本篇文章仅介绍Nginx的基本配置用法,proxy、upstream和其它指令我们再专门写博文介绍。

2023-11-04 22:22:59 1184 1

原创 Nginx(二十) 获取真实客户端IP

为使 Nginx 后端的上游服务器可以获得真实客户端 IP,Nginx 提供了 ngx_http_realip_module 模块用以实现真实客户端 IP 的获取及传递的功能。通过该模块提供的配置指令,用户可以手动设置上层反向代理服务器的 IP 作为授信 IP,Nginx 服务器根据配置指令的配置排除授信 IP,而甄别出真实的客户端 IP 进行日志记录,并传递给上游服务器。模块配置指令如下表所示。默认会以最后一个 IP 为真实客户端 IP,当指令值为 on 时,会以最后一个非信 IP 为真实客户端 IP。

2024-01-07 23:00:12 861

原创 Nginx(十九) range请求-断点续传/多线程下载

在 Nginx 缓存默认配置下,Nginx 处理完一个大文件的初始请求后,后续的用户请求必须等待整个文件下载结束并存入缓存后才可以继续被处理,整个过程非常耗时。为解决这个问题,Nginx 提供了 ngx_http_slice_module 模块,用以缓存范围请求的支持。该模块将文件分成更小的切片(slices),客户端每个范围请求覆盖特定的切片,如果该范围没有缓存,则从源服务器请求后存入缓存,否则就从缓存中返回数据。http_slice 模块配置指令如下表所示。

2024-01-07 22:54:26 1940

原创 Nginx(十八) 性能调优

如果我们使用了proxy_pass进行反向代理,那么nginx和后端的upstream server之间默认是用HTTP/1.0协议通信的。如果我们使用了proxy_pass进行反向代理,那么nginx和后端的upstream server之间默认是用HTTP/1.0协议通信的。同时,我们后端的nginx上没有设置gzip_http_version为1.0,那么Cache的url将不会进行gzip压缩。Nginx三大优势,动静分离、反向代理、负载均衡。14、开启多线程下载、断点续传。

2024-01-04 23:11:57 1542

原创 Nginx(十七) 日志轮询/切割

Logrotate 是 CentOS 操作系统的内置日志管理工具,基于 anacrontab 实现计划任务,通过配置 logrotate,可以按照每天、周、月或达到某一大小的日志文件进行归档操作,并允许对日志文件实行压缩、删除或邮寄等操作。说明文件格式不支持,因为windows系统的文件格式是dos,而linux系统是unix,所以需要将文件格式从dos修改为unix。执行完该命令后,并不会实际执行文件备份,只是用来检查配置文件是否正确,如有有错,会提示error,按照错误提示修改配置文件即可。

2024-01-04 23:06:31 971

原创 Nginx(十六) 配置文件详解 - server stream服务流

本篇文章主要讲 ngx_stream_core_module 模块下各指令的使用方法,Nginx默认未配置该模块,需要用“--with-stream”配置参数重新编译Nginx。udp:指定一个用于处理数据包的监听套接字(1.9.13)。为了在同一会话中处理来自同一地址和端口的数据包,还应指定 reuseport 参数。设置服务器接受连接的套接字address和port。指定读取代理协议头的超时时间。为指定流服务器的指令提供配置文件上下文。指定预读取阶段的超时时间。指定预读取缓冲区的大小。

2024-01-02 22:30:23 1925

原创 Nginx(十五) proxy_pass和proxy_redirect指令的组合测试

测试1:proxy_redirect http://127.0.0.1:8080/three/ http://www.read*******l.cn:8688/four/;测试1:proxy_redirect http://127.0.0.1:8080/three/ http://www.read*******l.cn:8688/four/;客户端发送请求:http://www.read*******l.cn:8688/one/hello。

2024-01-02 00:50:44 1265

原创 Linux系统中跟TCP相关的内核参数

当进程调用 close() 函数关闭 socket 后,相关句柄已被释放,无论该连接是处于 FIN_WAIT1 状态,还是确实关闭了,该连接已经与进程完全无关,由内核和另一端完成四次挥手交互,此时的连接就称为孤儿连接。设为0表示关闭功能,设为1表示仅作为客户端时使用,设为2表示仅作为服务端时使用,设为3表示无论作为客户端还是服务端都使用TFO功能。设为0表示关闭RACK,设为1表示开启RACK,设为2表示把RACK的重排序窗口静态化(min_rtt/4),设为3表示禁用RACK的DUPACK阈值探索。

2023-12-24 00:21:23 2078 1

原创 TCP 核心工作机制

一、如何保证传输可靠TCP 的核心知识:如何保证传输可靠 + 如何提高传输效率:确认应答机制 + 超时重传机制:滑动窗口机制、快速重传机制、流量控制机制、延时应答机制、捎带应答机制、拥塞控制机制一、如何保证传输可靠TCP的可靠性主要是通过来实现的。1 确认应答机制先看发送方:在没有滑动窗口机制之前,发送方一次只能发送一段报文,且每次发送完后要等待接收方的ACK确认,只有在收到接收方的ACK确认应答后,才能将发送缓冲区里对应的数据释放掉,并开始发送第二段报文。

2023-12-19 22:53:08 641

原创 TCP报文头(首部)详解

TCP协议传输的数据单元是报文段,一个报文段由TCP首部(报文头)和TCP数据两部分组成,其中TCP首部尤其重要,首部用于控制(新建、断开)连接、流量和拥塞等。TCP首部的固定长度是20B,最大长度是60B,其中可变选项长度最长为40B(4B×10)。

2023-12-12 23:12:28 8723

原创 TCP/UDP 的特点、区别及优缺点

所以UDP既不保证数据的传递(可能会丢包),也不重传丢失的数据包,相对不太可靠,但是,与TCP相比,它传输数据的速度更快,常用于传输音频、视频、多媒体数据流等数据,常用于音频和多媒体应用。传输速度慢、效率低。而且在传输过程中,还要考虑确认机制,重传机制和拥塞机制等,这都会消耗一定时间,使得传输效率略低,所以TCP不适合实时性要求高的场景;UDP 协议对应用程序传递给它的数据既不合并,也不拆分,而是保留这些报文的边界,将每条数据封装成独立的数据报进行传输,每个数据报都是独立的实体,不会进行拆分和重组。

2023-12-11 23:56:51 1237

原创 TCP三次握手、四次挥手及状态转换详解

服务端收到客户端的SYN报文,如果允许建立连接,就向客户端发送SYN+ACK报文,报头需初始化seq和ack值,之后进入 SYN-RCVD 状态,等待客户端的ACK报文。当被动关闭连接的一方收到FIN报文后,发现自己也没有数据要发送给对端,就将两次挥手合并成一次,直接给对端发送FIN+ACK报文。被动关闭连接的一方等发送完所有数据后,应用层也会关闭socket,内核协议栈自动给主动关闭方发送一个FIN报文,告知对方我方也也不再发送数据,可以关闭连接,之后进入 LAST-ACK 状态。

2023-12-10 00:28:12 1382 2

原创 分层网络模型(OSI、TCP/IP)及对应的网络协议

不同的是OSl参考模型划分7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP参考模型最多划分了5个层次,分别是物理层,数据链路层、网络层、传输层和应用层,将OSI参考模型中的高三层合并为一层统称应用层。OSI划分的七个层次由高到低依次为:Application(应用层)、Presentation(表示层)、Session(会话层)、Transport(传输层)、Network(网络层)、DataLink(数据链路层)和Physical(物理层)。

2023-12-10 00:15:53 1446

原创 Nginx(八) try_files 指令测试

测试1:try_files

2023-12-04 23:16:44 369

原创 Nginx(十二) gzip & gzip_static & sendfile & directio & aio 组合使用测试(2)

是否调用aio跟aio和directio的配置相关,跟gzip配置无关。.js文件大小大于gzip_min_length设定值400kb,满足gzip条件,文件可被压缩,而且文件大小还大于directio设定值1m,所以Nginx最终通过aio+directio的方式将文件返回给客户端。index.js文件大小小于gzip_min_length设定值400kb,不满足gzip条件,文件不进行压缩,而且文件大小小于directio设定值1m,所以Nginx最终调用sendfile将文件返回给客户端。

2023-11-30 18:07:00 234

原创 Nginx(十) aio & sendfile & directio 组合使用测试(2)

【代码】Nginx(九) aio & sendfile & directio 组合使用测试(2)

2023-11-26 15:29:50 221

原创 Nginx(九) aio & sendfile & directio 组合使用测试(1)

测试4:开启aio、directio=2m,关闭sendfile,请求/vendor1.js。测试3:开启aio、directio=2m,关闭sendfile,请求/vendor.js。测试6:开启aio、directio=2m、sendfile,请求/vendor1.js。测试5:开启aio、directio=2m、sendfile,请求/vendor.js。测试2:开启aio,关闭directio、sendfile,请求/vendor.js。

2023-11-26 15:29:14 365

原创 Nginx(十一) gzip & gzip_static & sendfile & directio & aio 组合使用测试(1)

跟踪nginx工作进程的系统调用情况发现内核仅执行了read、write,未执行文件压缩,且读取的还是压缩文件,但未调用sendfile(),也为采用directio。,gzip_ratio = 3.15,文件被压缩了,跟踪nginx工作进程的系统调用情况发现内核也执行了文件压缩,但未调用sendfile(),也未采用directio。,gzip_ratio = 0,文件未被压缩,内核没有进行文件压缩,仅执行read(字节流读取)、write,且未调用sendfile(),未采用directio。

2023-11-25 23:34:21 130

原创 Nginx(七) root和alias的区别及详细测试

pages/one/本篇文章只讲root和alias的区别,配置文件详解请参考,下面开始进行测试。

2023-11-19 17:41:28 349

原创 Nginx(六) Nginx location 匹配顺序及优先级深究(亲测有效)

如果匹配过程能进入第6步,说明请求URI前缀与location uri匹配是最好的结果了,最终的结果记录也就是最佳答案。2.如果请求URI部分前缀或全部与location uri匹配,先记录下来(如有匹配长度更长的则覆盖记录),继续向下匹配,再看看是否还有最佳答案。本篇文章主要是探讨Nginx location的匹配顺序,依照惯例,我们还是先贴结论再看测试结果。,直到找到与"^~"匹配长度最长的那个选项后再停止匹配(如果实在找不到其它的,就只能拿这个凑合了)最后,我们根据上面的匹配顺序对各种匹配规则的。

2023-11-18 23:00:29 2846

原创 ascii 码对照表

ASCII码对照表等同于国际标准 ISO/IEC 646,ASCII码对照表是世界最通用的信息交换标准。ASCII码对照表的ASCII编码范围0x00-0x7F,即十进制的0-127,定义了128个字符。ASCII码对照表包含了33个控制字符(具有某些特殊功能但是无法显示的字符)和 95 个可显示字符(数字、字母、符号)。ASCII码对照表32~127之间的ASCII码表示的符号,在我们的键盘上都可以被找到。ASCII码对照表0~31之间的ASCII码常用于控制像打印机一样的外围设备。

2023-11-17 20:12:36 477

原创 Nginx(四) absolute_redirect、server_name_in_redirect、port_in_redirect 请求重定向指令组合测试

本篇文章主要用来测试absolute_redirect、server_name_in_redirect和port_in_redirect三个指令对Nginx请求重定向的影响,Nginx配置详解请参考另一篇文章Nginx(三) 配置文件详解接下来,在Chrome无痕模式下进行测试。测试1:absolute_redirect=on; server_name_in_redirect off; port_in_redirect on; #默认配置absolute_

2023-11-17 00:00:48 1096

原创 Nginx(五) break,if,return,rewrite和set指令的执行顺序深究

本篇文章主要对break,if,return,rewrite和set这5个指令的执行顺序进行深究,如需了解这5个指令的功能和配置,请参考另一篇文章。

2023-11-15 20:25:24 1483

原创 Nginx(二) 重新编译并添加模块

作用:一是检查所需模块是否已安装,二是将configure arguments: 后面的参数复制出来并保存,因为等会重新编译时还需将这些模块一同添加进去。

2023-11-05 22:43:38 1991

原创 Nginx(一) 安装与配置

我这里需要添加 --with-threads --with-http_ssl_module --with-http_gzip_static_module,大家根据个人需要进行添加,如果首次安装未添加,后续还是可以重新编译的(见另一篇博文)。如果我们要指定nginx的安装路径(默认路径:/usr/local/nginx)或是需要添加相关nginx模块,在./configure 命令后需要添加相关参数,可以同时带多个参数。如果未添加全局命令,就进入安装目录的sbin目录下执行./nginx。

2023-11-04 01:16:59 648

原创 Node.js V10.24.1 安装步骤(node、cnpm、yarn、vue)

先在yarn的安装目录下创建yarn_global和yarn_cache文件夹,并打开命令窗口执行以下命令。新增NODE_PATH系统变量,对应路径上面设置全局模块路径的下级文件夹node_modules。下载完成后,一直点击Next直到安装完成,可以自己修改安装位置。检查配置是否正确,打开文件 C:\Users\Administrator\.npmrc。PATH路径添加 D:\soft\nodejs\node_global。为node_global,缓存路径为node_cache。

2023-05-31 20:18:09 3322

原创 PostgreSql linux 常用命令

PostgreSQL linux 常用命令,长期更新

2022-11-09 15:48:37 8790

原创 windows server 2012 r2 切换语言为中文、英文,下载安装多语言安装包

windows server 2012 r2 切换语言为中文、英文,下载安装多语言安装包下载地址:https://pan.baidu.com/s/19P75HJ1KGbxIYKeUIeqG_w提取码:4141

2022-05-09 16:56:21 2155

原创 SSH连接工具

Xshell7 配合 Xftp7 使用MobaXterm_Personal 配合 WinSCP 使用

2022-02-10 17:38:38 564

原创 win10 下载安装nvm nodejs【详细步骤】

背景: 这几天在用vue-cli开放vue项目,本人主攻后端,首次使用,有很多坑要走,慢慢记录。坑1:npm run build 之后一直报错,ReferenceError: primordials is not defined,后查看相关博客才知道是node版本跟gulp版本不匹配,需要降低node版本,本地安装的是nodejs 14.XX.XX版本,将版本降低到11.15.0。1、安装nvm下载地址:Release 1.1.7 - Maintenance Release...

2021-09-13 11:29:07 484

原创 linux 防火墙命令

-- 防护墙#进程与状态相关-- 启动防火墙systemctl start firewalld-- 停止防火墙systemctl stop firewalld-- 查看防火墙状态systemctl status firewalld-- 设置防火墙随系统启动systemctl enable firewalld-- 禁止防火墙随系统启动systemctl disable firewalld-- 查看防火墙状态firewall-cmd --state-- 重启防火墙,更改防火墙后必须

2021-09-12 00:39:02 226

原创 初始化配置linux服务器 CentOs8 jdk8 mysql8

1、配置JDK1.1 下载JDK 本次安装jdk8,下载地址Java SE Development Kit 8 - Downloads1.2 将JDK放到服务器,个人放在了/usr/local/soft目录下,根据个人情况选择1.3 新建目录mkdir /usr/local/java1.4 解压jdk tar包到 /usr/local/java/cd /usr/softtar -xvf jdk-8u301-linux-x64.tar.gz -C /u...

2021-09-12 00:38:02 385

原创 KETTLE 9.1 最新版本下载地址

链接:https://sourceforge.net/projects/pentaho/files/

2021-05-16 19:35:02 3618 1

原创 ORACLE 数据库库表设置主键自增

创建主键自增长策略:create sequence logging_event_idminvalue 1nomaxvaluestart with 1increment by 1nocycle设置触发事件:create or replace trigger T_SYS_USER_USER_ID_TRIGGERbefore insert on logging_event ...

2019-12-20 19:45:48 463

原创 idea 设置class、interface、方法注释模板

1.设置class、interface、枚举类头部注释模板ctrl + shift + s -> Editor->File and Code Templates分别设置 Class、Interface、Enum#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#en...

2019-07-07 22:48:55 4981

原创 mybatis oracle 插入数据返回主键id

<insert id="add" parameterType="XXX.YYY.User"> <selectKey keyProperty="id" resultType="String" order="BEFORE"> select sys_guid() from dual </selectKey> inser...

2019-06-21 18:34:38 6574 1

原创 TimerTask.cancel() 与 Timer.cancel() 的区别

TimerTask.cancel() 与 Timer.cancel()都可以理解为清除任务队列中的任务。看源码 TimerTask.cancel() /** * Cancels this timer task. If the task has been scheduled for one-time * execution an...

2019-01-20 19:54:12 7652

原创 定时器第1篇——Timer详解及根据测试结果分析schedule与scheduleAtFixedRate区别

1.概述                Timer进行一个完整的定时任务需要结合TimerTask类一起使用。        Timer:是JDK提供的一个定时器工具,使用时会在主线程之外开启一个单独的线程用于执行指定的计划任务。可安排任务执行一次(延迟执行)或者定期重复执行多次。        TimerTask:是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行...

2019-01-20 00:36:04 1820

空空如也

空空如也

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

TA关注的人

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