
Nginx
文章平均质量分 91
丶星下灯
此人很水
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Nginx学习(11)—— Nginx源码架构、configure是怎么执行的(编译的具体细节)
nginx的源码目录与nginx的模块化以及功能的划分是紧密结合,这也使得我们可以很方便地找到相关功能的代码。我们先来看一下nginx源码的目录结构。使用tree命令看一下:主要目录详情如下:Nginx的编译流程从configure开始:configure脚本将根据我们输入的选项、系统环境参与来生成所需的文件(包含源文件与Makefile文件)。configure会调用一系列auto脚本来实现编译环境的初始化auto脚本由一系列脚本组成,他们有一些是实现一些通用功能由其它脚本来调用(如have),有一些则原创 2023-03-31 18:48:47 · 1413 阅读 · 0 评论 -
Nginx学习(10)—— event模块、core模块、变量
Nginx的模块种类有很多,除了HTTP模块,还有一些核心模块和mail系列模块。核心模块主要是做一些基础功能,比如Nginx的启动初始化,event处理机制,错误日志的初始化,ssl的初始化,正则处理初始化。mail模块可以对imap,pop3,smtp等协议进行反向代理,这些模块本身不对邮件内容进行处理。启动模块从启动Nginx进程开始,做了一系列的初始化工作,源代码位于src/core/nginx.c,从main函数开始原创 2023-03-30 19:35:29 · 851 阅读 · 0 评论 -
Nginx学习(9)—— 负载均衡模块
之所以说是预备操作,是因为在这两个函数中,并不实际进行建立连接或者释放连接的动作,而只是执行获取连接的地址或维护连接状态的操作。需要理解的清楚一点,在peer.get函数中获取连接的地址信息,并不代表这时连接一定没有被建立,相反的,通过get函数的返回值,nginx可以了解是否存在可用连接,连接是否已经建立。这是一个很重要的性质,因为不同的负载均衡模块对各种属性的支持情况都是不一样的,那么就需要在解析配置文件的时候检测出是否使用了不支持的负载均衡属性并给出错误提示,这对于提升系统维护性是很有意义的。原创 2023-03-29 16:56:37 · 1518 阅读 · 2 评论 -
Nginx学习(8)—— upstream模块
nginx模块一般被分成三大类:handler、filter和upstream。前面的章节中,读者已经了解了handler、filter。利用这两类模块,可以使nginx轻松完成任何单机工作。而upstream模块,将使nginx跨越单机的限制,完成网络数据的接收、处理和转发。数据转发功能,为nginx提供了跨越单机的横向处理能力,使nginx摆脱只能为终端节点提供单一功能的限制,使它具备了网络应用级别的拆分、封装和整合的功能。数据转发是nginx有能力构建一个网络应用的关键组件。原创 2023-03-29 10:56:58 · 2092 阅读 · 0 评论 -
Nginx学习(7)—— 过滤模块(filter)
过滤模块是过滤响应头和内容的模块。它工作在获取回复内容之后,向用户发送响应之前。它的处理过程分为两个阶段,过滤HTTP回复的头部和主体,在这两个阶段可以分别对头部和主体进行修改。所有模块的响应内容都要调用这两个函数指针指向的函数,被这两个函数处理后再返回给客户端。响应的主体内容就存于单链表in,链表一般不会太长,有时in参数可能为NULL。in中存有buf结构体中,对于静态文件,这个buf大小默认是32K;对于反向代理的应用,这个buf可能是4k或者8k。原创 2023-03-28 18:13:05 · 1810 阅读 · 0 评论 -
Nginx学习(6)—— handler模块(自定义handler配置模块的编码编译)
Handler模块就是接受来自客户端的请求并产生输出的模块。配置文件中使用location指令可以配置content handler模块,当Nginx系统启动的时候,每个handler模块都有一次机会把自己关联到对应的location上。如果有多个handler模块都关联了同一个location,那么实际上只有一个handler模块真正会起作用。所以在开发阶段应该避免多个handler模块关联同一个location的情况发生。handler模块处理的结果通常有三种情况处理成功。原创 2023-03-27 17:29:35 · 1701 阅读 · 0 评论 -
Nginx学习(5)—— 基本结构(源码)
可以看到,Nginx自定义了一个带有长度的字符串结构。这意味着,data所指向的字符串并不是以 “\0” 结束的。:对src按照type方式编码,结果放到dst中。如果dst传NULL可获得结果的空间大小。:将src的前n个字符转换成小写存放到dst字符串中。:将结果放到dst中,需要保证dst有足够的空间存放结果。:log为后续在该pool上进行操作时输出日志的对象。:dst传NULL返回结果占用空间大小。:dst传NULL返回结果占用空间大小。原创 2023-03-22 14:50:23 · 1233 阅读 · 0 评论 -
Nginx学习(4)—— 高可用配置(keepalived实现Nginx的高可用)
一般高可用的服务端会都有备用服务,当某一个服务节点挂掉的时候就会有备用机顶上。这往往需要反向代理(Nginx)来将连接切换到可用的服务机器上。那么,当反向代理服务Nginx挂掉之后,就没办法再对外提供服务了。所以,要想Nginx也高可用就需要有备用Nginx,每个Nginx服务上都有负责检测的keepalived:原创 2023-03-16 14:05:05 · 356 阅读 · 0 评论 -
Nginx学习(3)—— 反向代理、负载均衡、动静分离、URLRewrite、防盗链
所谓代理,指的是在用户和服务器之间有个中间人,对于用户而言它是代理的服务器,对服务器而言它是代理的用户。那么正向代理就是用户主动配置的代理服务器,通过代理服务器向目标服务器发送请求。反向代理就是服务器主动提供的,供用户来访问的代理。原创 2023-03-08 15:16:57 · 1094 阅读 · 0 评论 -
Nginx学习 (2) —— 虚拟主机配置
当用户提交请求URI后nginx会将完整的URI反馈给后端应用服务器,应用服务器通过解析URI再查询数据库拿到真实的资源路径并返回给nginx,再由nginx返回给用户。不同用户通过不同的域名来访问nginx服务的时候nginx通过泛解析将真实的域名传给最终的服务端(比如tomcat),服务端拿到这个域名后解析字符串的前缀去数据库查询对应的用户信息并返回给nginx,nginx再回显给用户。类似于多用户二级域名,当用户需要访问服务器上的资源时,用户输入的网址并不是真实的,而是一个唯一随机串,也叫做短网址。原创 2023-03-07 14:04:24 · 792 阅读 · 1 评论 -
Nginx学习 (1) —— 初识Nginx(编译安装、启动停止、简单配置)
当一个用户请求进来后,首先由worker子进程解析这一次请求(因为子进程是知道配置文件的内容的,所以子进程可以判断该请求的资源是否存在)发现请求是想获取index.html文件,然后做出响应。nginx启动时会启动主进程,负责读取配置文件并做校验,校验成功后会fork()多个子进程,此后主进程主要的工作就是协调子进程进行工作。对于初次安装Nginx的Linux系统来说是不支持 service 和 systemctl 命令启动的。浏览器输入ip地址访问:显示如下表示成功。:(启动nginx需要的最少配置)原创 2023-02-22 09:44:41 · 1878 阅读 · 1 评论