Nginx学习笔记
Nginx
NGC_2070
纸上得来终觉浅,绝知此事要躬行!
展开
-
Nginx学习笔记之Nginx事件驱动模型
Nginx事件驱动模型在我们了解了网络事件以及事件分发收集器以后,再看Nginx是怎么处理事件的。 当我们Nginx刚刚启动时,实际上在WAIT FOR EVENTS CONNECTIONS这一块,也就是说我们打开了80或者443端口,这个时候我们在等待新的事件进来。 什么样的事件呢? 比如说新的客户端连上了我们的Nginx,它向我们发起来连接,我们在等这样的事件。 这样一步,往往对应着我们epoll当中的epoll_wait这样一个方法。 这时我们的Nginx其实是处于一个sleep这原创 2020-06-23 20:51:29 · 398 阅读 · 0 评论 -
Nginx学习笔记之网络收发与Nginx事件间的对应关系
网络收发与Nginx事件间的对应关系Nginx是一个事件驱动的框架 所谓事件,主要指的是网络事件。 Nginx每个连接,会自然对应两个网络事件,一个读事件,一个写事件。所以,我们在深入了解Nginx各种原理以及在极端情况下一些错误场景的处理时,必须首先理解什么是网络事件。 如图,比如主机A就是我们家里的一台笔记本电脑,主机B就是我们的服务器,上面跑着Nginx。 从主机A发送一个http的get请求,发送到主机B,这样一个过程中究竟经历了哪些网络事件呢?如在下面数据流层。原创 2020-06-22 17:42:22 · 242 阅读 · 0 评论 -
Nginx学习笔记之优雅地关闭worker进程
优雅地关闭worker进程之前提到的nginx命令行时,nginx停止有两种方式, -s quit和 -s stop 其中stop表示理及停止nginx,而quit我们称为优雅地关闭nginx,对应的信号也是同样的。 以及之前提到的reload,热部署这样的过程中,我们都使用了优雅地停止nginx。优雅地停止nginx到底是怎样的一个过程? 所谓优雅地关闭是对worker进程而言的,因为只有worker进程才会处理请求。 如果我们在处理一个连接的时候,不管连接此时对于请求是怎样一个作用,.原创 2020-06-22 14:54:08 · 1356 阅读 · 0 评论 -
Nginx学习笔记之热升级的完整流程
声明:图片来自 github:https://github.com/russelltao/geektime-nginx热升级的完整流程在nginx不停止服务的情况下,更换它的二进制文件,这个功能非常有用,但我们在执行nginx二进制文件升级过程中,还是可能会遇到很多问题,比如老的worker进程一直退不掉,新的worker进程升级以后出现了新的问题,我们要考虑回滚,或者我们升级了新的nginx文件以后,会发现很多我们预期功能指向的配置文件出现了错误。下面介绍热升级的流程是怎样进行的。热升级流...原创 2020-06-22 13:59:10 · 249 阅读 · 0 评论 -
Nginx学习笔记之reload重载配置文件真相
声明:图片来自 github:https://github.com/russelltao/geektime-nginxreload重载配置文件真相之前的演示中,我们更改了nginx配置文件时,都会执行 nginx -s reload。 我们执行这条命令的原因是,我们希望nginx不停止服务,始终在处理新的请求的同时,把nginx配置的文件平滑地从旧的nginx.conf更新为新的nginx.conf。 这样一个功能对nginx非常有必要,但有时我们发现执行后,nginx的worker进程变多..原创 2020-06-22 12:05:45 · 2342 阅读 · 0 评论 -
Nginx学习笔记之使用信号管理Nginx的父子进程
声明:图片来自 github:https://github.com/russelltao/geektime-nginx使用信号管理Nginx的父子进程Nginx是一个多进程的程序,多进程之间进行通信可以使用共享内存,信号等。 在做进程间的管理时,通常只使用信号。 能够发送和处理信号的有Master进程,Worker进程,还有Nginx命令行。Master进程 因为master进程可以启动worker进程,所以它管理worker进程的方式首先是监控worker进程有没有发送CHLD信..原创 2020-06-21 15:25:07 · 284 阅读 · 0 评论 -
Nginx学习笔记之Nginx的进程结构及实例演示
声明:图片来自 github:https://github.com/russelltao/geektime-nginxNginx的进程结构Nginx有两种进程结构: 单进程结构 多进程结构 单进程结构不适合生产环境,只适合做开发调试使用 在生产环境中我们必须保证Nginx足够健壮,以及Nginx可以利用多核的特性,而单进程的Nginx是做不到这一点的,所以默认额配置中都是打开多进程的Nginx。多进程的Nginx的进程模型:Nginx的进程是这样的,会有一个父进程..原创 2020-06-21 14:42:12 · 263 阅读 · 0 评论 -
Nginx学习笔记之Nginx请求处理流程
声明:图片来自 github:https://github.com/russelltao/geektime-nginxNginx请求处理流程Nginx运行在企业内网的最外层,也就是边缘节点,它处理的流量是其它服务器处理流量的数倍,甚至是几个数量级。任何问题在不同的数量级之下,解决方案是不同的。所以在Nginx处理的场景中,所有的问题都会被放大。因此我们要去理解为什么Nginx要采用master-worker这种架构模型,为什么worker的数量要和CPU的核数相匹配,当我们需要在多个worker..原创 2020-06-21 12:43:53 · 409 阅读 · 0 评论 -
Nginx学习笔记之用免费的SSL证书实现一个HTTPS站点(待续)
用免费的SSL证书实现一个HTTPS站点现在有一个网站,用域名访问不是https的,通过certbot申请证书来使网站变为HTTPS网站 在Centos系统下,安装下面工具yum install python2-certbot-nginx安装完工具之后,进行配置certbot --nginx --nginx-server-root=/usr/local/openresty/nginx/conf/ -d 自己的域名certbot后缀加上--nginx的时候,它就为nginx的conf.原创 2020-06-20 21:24:31 · 230 阅读 · 0 评论 -
Nginx学习笔记之SSL协议握手时Nginx的性能瓶颈在哪里?
声明:图片来自 github:https://github.com/russelltao/geektime-nginxSSL协议握手时Nginx的性能瓶颈在哪里?TLS通讯过程通讯过程中双方主要想完成四个目的 验证身份 达成安全套件共识 传递并生成密钥 加密通讯 ①浏览器向服务器发送ClientHello的消息 因为我们的浏览器是非常多样化的,比如Firefox,IE,Chrome,而且浏览器的版本在不停地变更,所以不同的浏览器它所支持的安全套件,加密算法都是不..原创 2020-06-19 15:05:01 · 716 阅读 · 0 评论 -
Nginx学习笔记之SSL证书的公信力是如何保证的?
声明:图片来自 github:https://github.com/russelltao/geektime-nginxSSL证书的公信力是如何保证的? PKI公钥基础设施 CA为CA机构,站点的维护者就是证书的订阅人,必须去申请一个证书,就需要去登记,我是谁,我输入什么组织,我想做什么? 到了登记机构,再通过CSR发给CA,CA通过以后,会生成一对公钥和私钥,公钥会CA证书里保存着,证书订阅人拿到公钥和私钥以后,就会把它部署到自己的web服务器,如Nginx。 当浏览器通过如下...原创 2020-06-19 13:56:28 · 262 阅读 · 0 评论 -
Nginx学习笔记之对称加密与非对称加密各种的应用场景
声明:图片来自 github:https://github.com/russelltao/geektime-nginx对称加密与非对称加密各种的应用场景 对称加密 在对称加密这样一个场景中:两个想通讯的人,Bob和Alice,他们共同持有同一把秘钥,Bob可以通过这把秘钥把原始文档生成加密文档,Alice可以使用这把秘钥把加密文档还原成原始文档。而中间的任何人没有持有这把秘钥,即使他知道了对称加密的算法,他也没有办法把密文还原成明文。 对称加密实现原理 以RC4这样的一个对称加密..原创 2020-06-19 11:29:15 · 1102 阅读 · 0 评论 -
Nginx学习笔记之从网络原理来看SSL安全协议
声明:图片来自 github:https://github.com/russelltao/geektime-nginx从网络原理来看SSL安全协议SSL:Secure Sockets Layer TLS:Transport Layer Security SSL/TLS通用模型 TLS的密码套件解读 当我们抓包或者观察服务器端的配置时,可以看到类似于这张图中的配置。这个安全密码的配置,它决定了我们的TLS协议是怎样保障明文被加密的,这里大概有四个组成部分: 密.原创 2020-06-19 10:48:51 · 245 阅读 · 0 评论 -
基于OpenResty用Lua语言实现简单服务
基于OpenResty用Lua语言实现简单服务下载OpenResty 官网:openresty.org 获取 wgethttps://openresty.org/download/openresty-1.15.8.3.tar.gz解压进入文件分析目录结构 相比Nginx源代码目录相比少了很多东西,少了的东西在bundle目录下。build是编译后生成的目标中间文件 在bundle目录中有很多模块,最核心的是Nginx源代码,nginx-相应的版本中,当前的openr..原创 2020-06-18 21:01:59 · 550 阅读 · 0 评论 -
用Nginx搭建一个可用的静态资源服务器
用Nginx搭建一个可用的静态资源服务器...原创 2020-06-18 16:10:48 · 494 阅读 · 0 评论 -
Nginx命令行及演示:重载、热部署,日志切割
Nginx命令行及演示:重载、热部署,日志切割Nginx命令行格式:nginx-s reload 帮助:-?-h 使用指定的配置文件:-c 默认的情况下,我们编译出来的Nginx会寻找我们执行configure时指定的位置的配置文件,但是在命令行中可以人为的指定另一个配置文件, -c加上配置文件的路径 指定配置指令:-g 在nginxconfigure目录里有很多条指令,但是那些指令需要在命令行中覆盖中间的一些指令,可以使用-g做到 指定运行目录:-p 运行目录下会有很多..原创 2020-06-18 01:57:10 · 653 阅读 · 0 评论 -
Nginx学习笔记之Nginx配置文件的通用语法简介
声明:图片来自 github:https://github.com/russelltao/geektime-nginx (Nginx核心知识100讲)Nginx配置文件的通用语法介绍Nginx二进制文件中以及指定它包含了哪些模块,但每一个模块都会提供独一无二的配置语法,这些配置语法会遵循同样的语法规则。 配置文件由指令与指令块构成 如http{}就是一个指令块 include mine.types; 这是一条指令 每条指令都是以分号结尾 指令和参数间以空格符号分隔 ...原创 2020-06-17 22:04:02 · 404 阅读 · 0 评论 -
Nginx学习笔记之编译出适合自己的Nginx
编译出适合自己的Nginx编译Nginx 下载Nginx 进入官网:nginx.org 点击download 选择版本,右键复制链接地址在Linux中wget上一步复制的链接地址:wget http://nginx.org/download/nginx-1.18.0.tar.gz解压安装包,然后进入解压后的源码版本:tar -xzf nginx-1.18.0.tar.gz 介绍各目录 anto目录(有4个子目录) CC:用于编译.原创 2020-06-17 18:49:11 · 1957 阅读 · 0 评论 -
CentOS8安装库文件
声明:原文链接Centos 8 安装 Nginx安装编译工具及库文件yum -y install gcc gcc-c++ automake autoconf libtool make选定源码目录 可以是任何目录,本文选定的是/usr/local/src 安装PCRE 注意:pcre 必须是最新版的 PCRE 作用是让 Nginx 支持 Rewrite 功能。 cd /usr/local/src &&wget http://downloads.sour...转载 2020-06-17 17:58:39 · 1216 阅读 · 0 评论 -
Nginx学习笔记之Nginx初识
声明:图片来自 github:https://github.com/russelltao/geektime-nginx (课程《Nginx核心知识100讲》)为什么用Nginx?它的五个优点:高并发,高性能 可扩展性好 (模块化设计非常稳定,第三方模块,生态圈非常丰富) 高可靠性 (服务器上可稳定运行数年) 热部署 (不停止服务的情况下升级Nginx) BSD许可 (在定制需求下,可修改Nginx源代码...原创 2020-06-17 14:57:36 · 242 阅读 · 0 评论 -
Nginx源码学习启程
Nginx源码学习启程准备学习Nginx源码,看到一篇微信文章,对Nginx框架进行了整理,并绘制成框图,条例清晰地展现了Nginx各模块的作用及联系。附链接:https://mp.weixin.qq.com/s/XrtH9-Eo7pzJu-Fzt89voQ根据此图,开启Nginx源码的学习。...原创 2020-04-19 13:02:00 · 193 阅读 · 0 评论