1. Nginx模块 1.1 Nginx中的模块化设计 Nginx 的内部结构是由核心部分和一系列的功能模块所组成。这样划分是为了使得每个模块的功能相对简单,便于开发,同时也便于对系统进行功能扩展。Nginx 将各功能模块组织成一条链,当有请求到达的时候,请求依次经过这条链上的部分或者全部模块,进行处理。例如前面讲到的 http 请求,会有11个处理阶段,而每个阶段有对应着许多在此阶段生效的模块对
1. Nginx 的进程模型 前面介绍 Nginx 时有介绍过 Nginx 的进程模型。Nginx 启动时首先启动一个 Master 进程,然后由 Master 进程启动一个或者多个 Worker 子进程。Master 进程主要完成配置读取,通过发送信号控制 Worker 进程的启动和停止等,而 Worker 子进程是用来处理客户端发来的 Http 请求,且Worker进程之间会通过共享内存进行通
1. 什么是盗链? 百度百科的解释如下: 盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。 盗链在如今的互联网世界无处不在,盗图,盗视频、盗文章等等,都是通过获取正规网站的图片、视频、文章等的 ur
1. Nginx中的缓存介绍 由于 Nginx 是在网站的所有其他后台服务的最前线,它接收的请求和流量是后台服务的数倍甚至数十倍之多。因此,用好 Nginx 的缓存功能对于大型网站而言至关重要。Nginx 中的缓存功能优势如下: 提升所有客户端体验 有效降低上游服务器的负载 减少上游服务器之间的流量消耗 Nginx 的 Web 缓存服务主要由 proxy_cache 相关指令集和 fastcgi_
1. Nginx日志功能介绍 通常,在生产环境中使用 Nginx 进行反向代理和负载均衡或者各种其他处理时,良好的日志记录是非常关键的一环。通过精心配置的 Nginx 日志,我们可以获取用户的真实 ip、浏览器信息,请求处理时间,请求URL等,这样方便我们排查和回溯错误。具体要记录哪些信息,可以通过 Nginx 中的 log_format 指令定义,由它定义日志的格式。而对于使用哪种日志格式和设置
这一小节中,我们将实战 Nginx 的四层和七层负载均衡功能。条件有限,使用一台公网主机,在上面搭建好 Nginx 服务。公网 IP 为 180.76.152.113。 首先会进行简单的四层负载均衡实验,不会涉及多种负载均衡算法,只使用默认的 Round-Robin算法。在后续的七层负载均衡实验中,会重点测试不同的负载均衡策略,完成相关实验。 1. Nginx的四层负载均衡实验 首先在 nginx
1. 什么是负载均衡 负载均衡,其英文简称Load Balancing,是一种计算机技术。用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。宏观上的意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行以解决高性能,单点故障(高可用),扩展性(水平伸缩)等高流量
本小节,我们继续学习 Nginx 在 七层反向代理中的其它几种比较常见的情况,比如 web 服务中的 WebSocket 协议的反向代理和 uwsgi 协议的反向代理。 1. WebSocket的反向代理 WebSocket 是目前比较成熟的技术了, WebSocket 协议为创建客户端和服务器端需要实时双向通讯的 webapp 提供了一个选择。服务器可以向浏览器推送相关消息,这样在前端实现的某个
Nginx 最强大的地方是在于其 HTTP 请求的反向代理,也即常说的七层反向代理。在这一层代理中,通过 Nginx 框架提供的相关配置,我们能在该层将发送过来的 http 协议转换成各种其他的协议比如 fastcgi 协议、uwsgi协议、grpc、http(高版本协议)、websocket协议等。这样使用 Nginx 框架,我们可以支持多种应用服务(java web、python web等)的
本小节,我们将主要介绍 Nginx 中 Http 请求 11 个阶段中的最后几个重要的阶段以及相关的模块,并演示其用法。 1. try_files 阶段 这个阶段又称为 precontent 阶段,是 content 阶段的前置处理阶段,该阶段主要介入的模块是 ngx_http_try_files_module 模块。该模块依次访问多个 URI 对应得文件(由 root 或者 alias 指令指定
在前面介绍完 post-read、server-rewrite、find-config、rewrite 和 post-rewrite 阶段后,我们将继续学习 preaccess 和 access 两个阶段,中间会涉及部分模块,一同进行说明。 1. preaccess 阶段 在 preaccess 阶段在 access 阶段之前,主要是限制用户的请求,比如并发连接数(limit_conn模块)和每秒
本部分内容将详细介绍 Nginx 中对 Http请求的 11 个处理阶段,分成 3 个小节讲解并进行相关实验操作。 1. http 请求 11 个处理阶段介绍 Nginx 将一个 Http 请求分成多个阶段,以模块为单位进行处理。其将 Http请求的处理过程分成了 11 个阶段,各个阶段可以包含任意多个 Http 的模块并以流水线的方式处理请求。这 11 个 Http 阶段如下所示: typede
前面的学习,知道 Nginx 的配置规则如下: 一行代表一个指令; 每个指令有其上下文环境,比如 listen 指令只能在 http 指令块中出现,不能单独出现。 下面我们将学习 Http 服务的初步配置和静态服务资源配置: 1. Http 服务配置初步 1.1 常用指令 在官方文档地址中有关于 Nginx 的所有模块,打开模块我们就能看到模块中支持的指令。最常用的指令,如 http、server
本节的目标是了解 Nginx 的基本配置。关于 Nginx 的配置,主要是以下 5 个方面: 初始配置 基本语法 http 服务配置 tcp/udp 反向代理 每个部分其实有比较多的扩展内容,今天我们会讲解初始配置以及配置文件的基本语法,后续的 http 服务配置、tcp/udp 配置和反向代理配置会在下一节中介绍。 1. 初始配置 在前面搭建好 Nginx 环境后,编译的 Nginx 根路径为
前面的小节中我们讲了如何在 Windows、Ubuntu、CentOS 操作系统下搭建 Nginx 环境。当然,我们也不会忘记另一个主流的操作系统 MacOS,这一节我们就来讲述下如何在 MacOS 下搭建 Nginx 环境: 1. 下载与安装 在 Mac 系统下我们要使用 Homebrew 来安装 Nginx。Homebrew 是一款 Mac 操作系统下的软件包管理工具,拥有安装、卸载、更新、查