展开全部

主编推荐语

本书是一本结合Lua语言的Nginx进阶书籍,涵盖基础、中高级、进阶内容与架构设计。

内容简介

本书分为五个部分,基础内容,包括安装、基础配置等相关内容;中级内容,包括模块、Lua语言的引入、TCP服务等内容;高级内容,包括Nginx的配置需求和重构、CDN代理下的Nginx、日志集中的存储方案、爬虫、Lua的容错设计等内容;进阶内容,包括日志分析、Nginx防御体系、重构proxy_cache缓存系统、性能优化、Lua的执行阶段、业务模式下Lua的Nginx API、Resty库等内容;架构设计,包括主流的动态upstream方案、伸缩的魅力、静态容灾系统、全站验证码设计、动态图片剪裁方案设计以及Nginx常见问题等。 本书是一本结合Lua语言的Nginx进阶书籍。

目录

  • 封面
  • 书名页
  • 内容简介
  • 版权页
  • 前 言
  • 目录
  • 第1章 Nginx学前必知
  • 1.1 HTTP请求报文
  • 1.2 HTTP响应报文
  • 1.3 安装Nginx
  • 1.4 支持HTTPS
  • 1.5 添加模块
  • 1.6 小结
  • 第2章 基础配置
  • 2.1 Nginx指令和指令块
  • 2.2 Nginx基本配置说明
  • 2.2.1 main配置
  • 2.2.2 与客户端有关的配置
  • 2.2.3 schmerver块
  • 2.2.4 location块
  • 2.3 include的使用
  • 2.4 常见配置
  • 2.4.1 常见配置注解
  • 2.4.2 常见配置实战技巧
  • 2.5 内置变量
  • 2.5.1 常见内置变量
  • 2.5.2 常见内置变量实战技巧
  • 2.6 小结
  • 第3章 强化基础配置
  • 3.1 牢记Context
  • 3.2 获取请求的IP地址
  • 3.2.1 获取用户的真实IP地址
  • 3.2.2 防止IP地址伪造
  • 3.2.3 后端服务器对IP地址的需求
  • 3.3 管理请求的行为
  • 3.3.1 限制IP地址的访问
  • 3.3.2 auth身份验证
  • 3.3.3 利用LDAP服务加强安全
  • 3.3.4 satisfy二选一的访问限制功能
  • 3.4 proxy代理
  • 3.4.1 proxy_pass请求代理规则
  • 3.4.2 减少后端服务器的网络开销
  • 3.4.3 控制请求头和请求体
  • 3.4.4 控制请求和后端服务器的交互时间
  • 3.5 upstream使用手册
  • 3.5.1 代理多台服务器
  • 3.5.2 故障转移
  • 3.5.3 负载均衡
  • 3.5.4 通过hash分片提升缓存命中率
  • 3.5.5 利用长连接提升性能
  • 3.5.6 利用resolver加速对内部域名的访问
  • 3.6 rewrite使用手册
  • 3.6.1 内部重定向
  • 3.6.2 域名跳转
  • 3.6.3 跳转POST请求
  • 3.6.4 设置变量的值
  • 3.7 限速白名单
  • 3.8 日志
  • 3.8.1 记录自定义变量
  • 3.8.2 日志格式规范
  • 3.8.3 日志存储
  • 3.9 HTTP执行阶段
  • 3.10 小结
  • 第4章 常用模块精解
  • 4.1 定制HTTP头信息
  • 4.1.1 使用ngx_http_headers_module设置响应头
  • 4.1.2 使用headers-more-nginx控制请求头和响应头
  • 4.2 第三方模块set-misc-nginx
  • 4.2.1 设置变量
  • 4.2.2 防止SQL注入
  • 4.2.3 字符串非转义和转义
  • 4.2.4 基于键值的集群分片
  • 4.2.5 base编码
  • 4.2.6 md5编码
  • 4.2.7 生成随机数
  • 4.2.8 本地时间的输出
  • 4.2.9 实战经验
  • 4.3 图片的处理
  • 4.3.1 image_filter图片处理
  • 4.3.2 采用渐进式方式打开JPEG图片
  • 4.3.3 WebP格式
  • 4.3.4 优化图片
  • 4.3.5 实战经验:动态切图
  • 4.4 TCP和UDP代理
  • 4.4.1 代理配置说明
  • 4.4.2 DNS服务的反向代理
  • 4.4.3 MySQL集群代理配置
  • 4.4.4 实战经验
  • 4.5 常用模块介绍
  • 4.5.1 基于访问IP地址跳转到对应城市
  • 4.5.2 修改响应内容
  • 4.5.3 零像素文件的生成及其作用
  • 4.5.4 图片的防盗链
  • 4.6 小结
  • 第5章 缓存系统
  • 5.1 缓存配置说明
  • 5.2 控制缓存有效期
  • 5.3 性能优化
  • 5.3.1 缓存未命中的最佳实践
  • 5.3.2 横向扩展最佳实践
  • 5.3.3 避免硬盘I/O阻塞
  • 5.3.4 集群模式
  • 5.4 高可用方案
  • 5.5 proxy_cache配置模板
  • 5.6 小结
  • 第6章 引入Lua
  • 6.1 引入Lua的原因
  • 6.2 Lua和LuaJIT
  • 6.3 环境搭建
  • 6.4 Lua的数据类型
  • 6.4.1 类型说明
  • 6.4.2 类型示例
  • 6.5 表达式
  • 6.5.1 算术运算符
  • 6.5.2 关系运算符
  • 6.5.3 逻辑运算符
  • 6.5.4 字符串连接和字符串长度计算
  • 6.5.5 运算符优先级
  • 6.6 变量
  • 6.6.1 全局变量
  • 6.6.2 局部变量
  • 6.6.3 变量赋值
  • 6.7 流程控制
  • 6.7.1 if-else
  • 6.7.2 for循环
  • 6.7.3 while循环
  • 6.7.4 break和return
  • 6.8 函数
  • 6.8.1 函数格式
  • 6.8.2 传参方式
  • 6.8.3 函数的创建位置
  • 6.9 模块
  • 6.9.1 模块格式
  • 6.9.2 加载模块
  • 6.10 Lua常见操作
  • 6.10.1 操作table
  • 6.10.2 定义字符串
  • 6.10.3 字符串连接
  • 6.11 引入Lua的插曲
  • 6.12 小结
  • 第7章 Lua-Nginx-Module常用指令
  • 7.1 Nginx和OpenResty
  • 7.2 安装Ngx_Lua
  • 7.3 牢记Context
  • 7.4 Hello World
  • 7.5 避免I/O阻塞
  • 7.6 定义模块搜索路径
  • 7.6.1 定义Lua模块的搜索路径
  • 7.6.2 定义C模块的搜索路径
  • 7.7 读/写Nginx的内置变量
  • 7.8 控制请求头
  • 7.8.1 添加请求头
  • 7.8.2 清除请求头
  • 7.8.3 获取请求头
  • 7.9 控制响应头
  • 7.9.1 获取响应头
  • 7.9.2 修改响应头
  • 7.9.3 清除响应头
  • 7.10 读取请求体
  • 7.10.1 强制获取请求体
  • 7.10.2 用同步非阻塞方式获取请求体
  • 7.10.3 使用场景示例
  • 7.10.4 使用建议
  • 7.11 输出响应体
  • 7.11.1 异步发送响应体
  • 7.11.2 同步发送响应体
  • 7.12 正则表达式
  • 7.12.1 单一捕获
  • 7.12.2 全部捕获
  • 7.12.3 更高效的匹配和捕获
  • 7.12.4 替换数据
  • 7.12.5 转义符号
  • 7.13 子请求
  • 7.13.1 请求方法
  • 7.13.2 单一子请求
  • 7.13.3 并发子请求
  • 7.14 获取Nginx的环境变量
  • 7.14.1 获取环境所在的模块
  • 7.14.2 确认调试模式
  • 7.14.3 获取prefix路径
  • 7.14.4 获取Nginx的版本号
  • 7.14.5 获取configure信息
  • 7.14.6 获取Ngx_Lua的版本号
  • 7.14.7 判断worker进程是否退出
  • 7.14.8 获取worker进程的ID
  • 7.14.9 获取worker进程的数量
  • 7.15 定时任务
  • 7.15.1 创建定时任务
  • 7.15.2 性能优化
  • 7.15.3 禁用的Lua API
  • 7.16 常用指令
  • 7.16.1 请求重定向
  • 7.16.2 日志记录
  • 7.16.3 请求中断处理
  • 7.17 提升开发和测试效率
  • 7.17.1 断开客户端连接
  • 7.17.2 请求休眠
  • 7.17.3 获取系统时间
  • 7.17.4 编码与解码
  • 7.17.5 防止SQL注入
  • 7.17.6 判断是否为子请求
  • 7.17.7 设置MIME类型
  • 7.18 小结
  • 第8章 Ngx_Lua的执行阶段
  • 8.1 init_by_lua_block
  • 8.1.1 阶段说明
  • 8.1.2 初始化配置
  • 8.1.3 控制初始值
  • 8.1.4 init_by_lua_file
  • 8.1.5 可使用的Lua API指令
  • 8.2 init_worker_by_lua_block
  • 8.2.1 阶段说明
  • 8.2.2 启动Nginx的定时任务
  • 8.2.3 动态进行后端健康检查
  • 8.3 set_by_lua_block
  • 8.3.1 阶段说明
  • 8.3.2 变量赋值
  • 8.3.3 rewrite阶段的混用模式
  • 8.3.4 阻塞事件
  • 8.3.5 被禁用的Lua API指令
  • 8.4 rewrite_by_lua_block
  • 8.4.1 阶段说明
  • 8.4.2 利用rewrite_by_lua_no_postpone改变执行顺序
  • 8.4.3 阶段控制
  • 8.5 access_by_lua_block
  • 8.5.1 阶段说明
  • 8.5.2 利用access_by_lua_no_postpone改变执行顺序
  • 8.5.3 阶段控制
  • 8.5.4 动态配置黑白名单
  • 8.6 content_by_lua_block
  • 8.6.1 阶段说明
  • 8.6.2 动态调整执行文件的路径
  • 8.7 balancer_by_lua_block
  • 8.7.1 阶段说明
  • 8.7.2 被禁用的Lua API指令
  • 8.8 header_filter_by_lua_block
  • 8.8.1 阶段说明
  • 8.8.2 被禁用的Lua API指令
  • 8.9 body_filter_by_lua_block
  • 8.9.1 阶段说明
  • 8.9.2 控制响应体数据
  • 8.9.3 被禁用的Lua API指令
  • 8.10 log_by_lua_block
  • 8.10.1 阶段说明
  • 8.10.2 被禁用的Lua API指令
  • 8.11 Lua和ngx.ssl
  • 8.12 Ngx_Lua执行阶段
  • 8.13 小结
  • 第9章 Nginx与数据库的交互
  • 9.1 安装cjson
  • 9.2 与MySQL交互
  • 9.2.1 安装lua-resty-mysql模块
  • 9.2.2 读取MySQL数据
  • 9.2.3 执行多条SQL语句
  • 9.2.4 防止SQL注入
  • 9.3 与Redis交互
  • 9.3.1 安装lua-resty-redis
  • 9.3.2 读/写Redis
  • 9.3.3 管道命令
  • 9.3.4 密码登录
  • 9.3.5 其他执行命令
  • 9.4 与数据库交互的常见问题
  • 9.4.1 连接池
  • 9.4.2 读/写分离
  • 9.4.3 分离配置文件和代码
  • 9.5 小结
  • 第10章 缓存利器
  • 10.1 worker进程的共享内存
  • 10.1.1 创建共享内存区域
  • 10.1.2 操作共享内存
  • 10.1.3 制造消息队列
  • 10.1.4 lua-resty-core
  • 10.1.5 配置环境
  • 10.2 Lua模块下的共享内存
  • 10.2.1 安装lua-resty-lrucache
  • 10.2.2 使用lua-resty-lrucache进行缓存的方法
  • 10.3 当前请求在各执行阶段间的数据共享
  • 10.3.1 ngx.ctx的使用
  • 10.3.2 子请求和内部重定向的缓存区别
  • 10.4 利用共享内存配置动态IP地址认证
  • 10.5 缓存和数据库的交互
  • 10.5.1 从数据库获取数据
  • 10.5.2 避免出现因缓存失效引起的“风暴”
  • 10.6 小结
  • 第11章 动态管理upstream
  • 11.1 实战需求分析
  • 11.2 ngx_http_dyups_module
  • 11.2.1 安装ngx_http_dyups_module
  • 11.2.2 动态管理upstream
  • 11.2.3 确保upstream数据的完整性
  • 11.3 nginx-upsync-module
  • 11.3.1 安装nginx-upsync-module和Consul
  • 11.3.2 Consul的键值操作
  • 11.3.3 动态管理upstream
  • 11.3.4 验证动态配置功能
  • 11.3.5 高可用、高并发设计
  • 11.4 基于balancer_by_lua_block的灵活控制
  • 11.5 小结
  • 第12章 Nginx日志分析系统
  • 12.1 实战需求分析
  • 12.2 ngxtop实时分析
  • 12.3 Flume方案的日志分析
  • 12.4 智能化nginx_log_analysis
  • 12.4.1 架构重构
  • 12.4.2 日志远程传输
  • 12.4.3 时序数据库
  • 12.4.4 日志规则设计
  • 12.5 lua-resty-logger-socket传输方案
  • 12.5.1 安装lua-resty-logger-socket
  • 12.5.2 远程传输配置
  • 12.5.3 参数解读
  • 12.6 时序数据库InfluxDB
  • 12.6.1 安装InfluxDB
  • 12.6.2 基本概念和操作
  • 12.6.3 数据分析之查询函数
  • 12.6.4 数据存放之保留策略
  • 12.6.5 定时任务之连续查询
  • 12.6.6 客户端操作之API
  • 12.6.7 使用UDP模式传输数据
  • 12.7 利用lua-resty-http实现API交互
  • 12.7.1 安装lua-resty-http
  • 12.7.2 使用方式
  • 12.8 提升InfluxDB性能
  • 12.9 小结
  • 第13章 静态容灾系统
  • 13.1 荆棘之路
  • 13.2 设计之路
  • 13.3 架构流程图
  • 13.3.1 反向代理系统
  • 13.3.2 日志分析系统
  • 13.3.3 后台系统
  • 13.3.4 爬虫系统
  • 13.3.5 容灾的缓存系统
  • 13.3.6 时间版本的用途
  • 13.3.7 异地容灾
  • 13.4 核心代码解说
  • 13.4.1 Ngx_Lua应用
  • 13.4.2 爬虫和日志系统的关系
  • 13.4.3 全部容灾和部分容灾功能
  • 13.5 静态容灾的智能关闭方案
  • 13.5.1 从日志分析系统中复制请求
  • 13.5.2 利用goreplay复制流量
  • 13.5.3 Nginx的镜像功能
  • 13.5.4 灰度验证容灾系统缓存
  • 13.6 小结
  • 第14章 深入挖掘反向代理
  • 14.1 验证码防御中心
  • 14.2 鉴权管理中心
  • 14.2.1 利用auth_request管理鉴权
  • 14.2.2 利用Ngx_Lua子请求实现鉴权功能
  • 14.3 并行访问
  • 14.3.1 轻线程的启动和终止
  • 14.3.2 等待和终止轻线程
  • 14.3.3 URL的外部合并和内部并发
  • 14.3.4 使用cosocket实现外部访问
  • 14.4 小结
  • 第15章 爬虫
  • 15.1 区分搜索引擎爬虫和恶意爬虫
  • 15.2 应对搜索引擎爬虫
  • 15.2.1 搜索引擎的User-Agent
  • 15.2.2 Robots协议
  • 15.2.3 控制搜索引擎爬虫实战
  • 15.3 应对恶意爬虫
  • 15.3.1 发现恶意爬虫
  • 15.3.2 抵御恶意爬虫之禁止访问
  • 15.3.3 抵御恶意爬虫之验证码拦截
  • 15.4 小插曲——使用假数据迷惑恶意爬虫
  • 15.5 小结
  • 第16章 性能分析和优化
  • 16.1 性能分析场景搭建
  • 16.1.1 安装SystemTap
  • 16.1.2 LuaJIT的Debug模式
  • 16.1.3 开启PCRE的Debug模式
  • 16.1.4 分析工具下载
  • 16.1.5 找出不支持Debug模式的lib库
  • 16.2 流量复制
  • 16.3 各项指标分析和优化建议
  • 16.3.1 连接池使用状态分析
  • 16.3.2 找出读/写频繁的文件
  • 16.3.3 执行阶段耗时分析
  • 16.3.4 HTTP连接数和文件打开数分析
  • 16.3.5 找出CPU“偷窃者”
  • 16.3.6 正则表达式耗时分析
  • 16.3.7 找出消耗CPU资源较多的指令
  • 16.3.8 利用火焰图展示和分析数据
  • 16.4 检查全局变量
  • 16.5 小结
  • 第17章 值得拥有的OpenResty
  • 17.1 OPM
  • 17.2 使用DNS提升访问效率
  • 17.3 TCP和UDP服务
  • 17.4 多层级缓存
  • 17.5 lua-resty-core扩展
  • 17.5.1 字符串分割
  • 17.5.2 Nginx进程管理
  • 17.6 全局唯一标识符UUID
  • 17.7 “全家福”awesome-resty
  • 17.8 OpenResty,未来!
  • 第18章 开发环境下的常见问题
  • 18.1 被截断的响应体
  • 18.2 “邪恶”的if
  • 18.3 “贪婪”的正则匹配
  • 18.4 规范HTTP状态码
  • 18.5 规范URL
  • 18.6 proxy_set_header的误操作
  • 18.7 开发环境下的证书问题
  • 18.8 深层次的错误重定向
  • 18.9 压测环境下的限速和短连接
  • 18.10 小结
  • 反侵权盗版声明
  • 封底
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

电子工业出版社

电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。