Nginx 教程

Nginx 教程 Nginx 简介 Nginx 源码架构分析 Nginx 编译安装 Nginx(Tengine) 编译安装 Nginx(OpenResty) 编译安装 Nginx 配置简述 Nginx Docker 容器化配置

Nginx 核心配置指令

Nginx 核心配置指令 Nginx 配置文件 Nginx 进程配置指令 Nginx 端口监听:listen Nginx 主机名server_name Nginx 处理HTTP请求 Nginx 路由匹配规则:localhost Nginx 重定向配置:rewrite Nginx 根目录配置:root Nginx 访问路径别名:alias Nginx 文件判断:try_files Nginx 零复制:sendfile Nginx 日志记录配置

Nginx HTTP模块

Nginx 镜像模块 Nginx 请求头控制模块 Nginx IP访问控制模块 Nginx 用户cookie模块 Nginx 并发连接数限制模块 Nginx 首页处理模块 Nginx 请求频率限制模块 Nginx 页面缓存时间配置 Nginx gzip压缩及相关配置

Nginx Web服务

Nginx 静态资源服务器搭建 Nginx 文件下载服务器搭建 Nginx 伪动态SSI服务器 Nginx HTTPS服务器搭建 Nginx FastCGI模块配置简述 Nginx PHP服务器环境搭建 Nginx 基于FastCGI负载均衡 Nginx CGI网关接口 Nginx uWSGI模块配置 Nginx Python项目部署 Nginx 伪流媒体服务器搭建 Nginx HTTP2模块配置简述 Nginx WebDAV模块配置简述

Nginx 代理服务器

Nginx HTTP代理服务器 Nginx stream模块简述 Nginx TCP/UDP代理简述 Nginx 基于SSL的TCP代理服务器 Nginx gRPC代理服务器

Nginx 缓存

Nginx Web缓存配置 Nginx 代理缓存配置 Nginx Memcached 缓存模块 Nginx 反向代理缓存服务器配置 Nginx 客户端缓存控制

Nginx 负载均衡

Nginx 负载均衡模块 Nginx 负载均衡策略 Nginx 长连接负载均衡 Nginx upstream容错机制 Nginx upstream动态更新 Nginx TCP/UDP负载均衡

Nginx 日志管理监控

Nginx 日志分析简述 Nginx 访问日志配置 Nginx 错误日志配置 Nginx 日志归档配置 Nginx 日志分析工具 ELK Nginx 监控工具 Prometheus

Nginx 集群

LVS(Linux虚拟服务器)简介 Keepalived 配置简述 Nginx 集群负载搭建 Nginx 集群配置管理规划 Nginx 配置归档工具GitLab Nginx 配置修改工具Ansible Jenkins 安装与配置简述 Nginx 集群配置管理实例

Nginx 在 k8s 的应用

Kubernetes(k8s)系统简述 Kubernetes(k8s)集群部署 Kubernetes(k8s)网络通信 Nginx Ingress 简介 Nginx Ingress 安装部署 Nginx Ingress 配置映射 Nginx Ingress 注解


Tengine 编译安装

Tengine 是由淘宝网发起的 Web 服务器项目。它在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine 的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。


1、Tengine源码获取

Tengine 目前的版本是 Tengine 2.3.2,据其官网介绍,该版本继承了 Nginx 1.17.3 版本的所有特性,并兼容了 Nginx 的配置参数。Tengine 开发了很多自有模块,同时也集成了很多优秀的第三方模块,源代码可以通过 Tengine 的官方网站获得,获取命令如下:

mkdir -p /opt/data/source
cd /opt/data/source
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
tar zxmf tengine-2.3.2.tar.gz


2、编译配置参数

Tengine 比开源版 Nginx 增加了一些编译配置参数。Tengine 增加的编译配置参数如下表所示。

编译配置参数 默认编译状态 参数说明
--without-procs 编译 不编译 Procs 模块
--without-http_ssl_module 编译 不编译 HTTP SSL 支持模块
--without-http_stub_status_module 编译 不编译运行状态模块
--without-http-upstream-rbtree 编译 不使用红黑树(RBTree)方式进行上游服务器的查找
--with-http_lua_module 不编译 编译 Lua 脚本模块
--with-stream_sni 不编译 编译 TCP 代理时基于 SSL 的 SNI 支持
--with-jemalloc 不编译 启用 jemalloc 内存管理

对于上表,有以下两点说明。
  • jemalloc 是 Facebook 开源的一个内存管理分配器;
  • Nginx 原有编译配置参数参见《Nginx编译安装》一节。

3、代码编译

代码编译过程如下。

 # 安装编译依赖
  yum -y install gcc pcre-devel  zlib-devel openssl-devel libxml2-devel \
      libxslt-devel gd-devel GeoIP-devel yajl-devel jemalloc-devel \
      libatomic_ops-devel luajit luajit-devel perl-devel perl-ExtUtils-Embed
  # 执行编译配置
  ./configure
  # 代码编译及安装
  make & make install
安装 Lua 或 LuaJIT 都可以,LuaJIT 是 Lua 的高效版本,推荐安装 LuaJIT。编译完成后,默认安装目录为 /usr/local/nginx。

4、Tengine 集成的模块

Tengine 自带的模块都存储在源码目录的 modules 文件中,用户可根据需要通过编译配置参数 --add-module 进行选择。模块说明如下表所示。

模块文件夹名 模块说明
mod_dubbo 提供对与后端 Dubbo 服务体系对接的支持
ngx_backtrace_module 该模块可用于在工作进程异常退出时转储 Nginx 的回溯信息,如在接收到某些信号(sigabr、sigbus、sigfpe、sigill、sigiot、sigsegv)时。它非常便于调试
ngx_debug_pool 该模块可以提供 Nginx/Tengine 内存池占用内存的状态信息
ngx_debug_timer 该模块可以提供 Nginx/Tengine 定时器的状态信息
ngx_http_concat_module 类似于 Apache 中的 mod_concat 模块,用于将多个文件合并在一个响应报文中
ngx_http_footer_filter_module 在请求的响应末尾输出一段内容
ngx_http_lua_module Lua 脚本集成模块
ngx_http_proxy_connect_module 提供对 HTTP 的 CONNECT 方法的支持
ngx_http_reqstat_module 监控模块
ngx_http_slice_module 文件切片模块
ngx_http_sysguard_module 该模块监控内存(含 SWAP 分区)、CPU 和请求的响应时间,当某些监控指标达到设定的阈值时,跳转到指定的 URL
ngx_http_tfs_module 该模块实现了 TFS 的客户端,为 TFS 提供了 RESTful API。TFS 的全称是 Taobao File System,是淘宝的一个开源分布式文件系统
ngx_http_trim_filter_module 该模块用于删除 HTML、内嵌在 JavaScript 和 CSS 中的注释以及重复的空白符
ngx_http_upstream_check_module 该模块可以为 Tengine 提供主动式后端服务器健康检查功能
ngx_http_upstream_consistent_hash_module 该模块提供一致性 hash 作为负载均衡算法
ngx_http_upstream_dynamic_module 此模块可在运行时动态解析 upstream 中 Server 域名
ngx_http_upstream_dyups_module upstream 动态修改模块
ngx_http_upstream_session_sticky_module 该模块是一个负载均衡模块,通过 cookie 实现客户端与后端服务器的会话保持,在一定条件下可以保证同一个客户端访问的是同一个后端服务器
ngx_http_upstream_vnswrr_module 该模块是一个高效的负载均衡算法,同 Nginx 官方的加权轮询算法 SWRR 相比,VNSWRR 具备平滑、散列和高性能特征
ngx_http_user_agent_module 该模块可以分析 HTTP 消息头属性字段"User-Agent"中的内容
ngx_multi_upstream_module Dubbo 服务的多路复用连接支持模块
ngx_slab_stat 该模块可以提供 Nginx/Tengine 共享内存的状态信息

上述模块功能说明来源于源码中的说明文档,具体使用方法可参照源码中的说明文档。

Tengine 编译完成后,可使用 nginx -m 命令查看所有已经加载的模块,static 标识是静态编译的,shared 标识是动态编译的。