图书介绍

Nginx完全开发指南 使用C、C++和OpenResty【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

Nginx完全开发指南 使用C、C++和OpenResty
  • 罗剑锋著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121314575
  • 出版时间:2017
  • 标注页数:618页
  • 文件大小:200MB
  • 文件页数:631页
  • 主题词:互联网络-网络服务器-程序设计-指南;C语言-程序设计-指南

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Nginx完全开发指南 使用C、C++和OpenRestyPDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第0章 导读1

0.1关于本书1

0.2读者对象2

0.3读者要求3

0.4运行环境4

0.5本书的结构4

0.6如何阅读本书7

0.7本书的源码8

第1章Nginx入门9

1.1关于Nginx9

1.1.1历史10

1.1.2特点10

1.1.3进程模型11

1.1.4版本12

1.2安装Nginx13

1.2.1准备工作13

1.2.2快速安装14

1.2.3运行命令14

1.2.4验证安装16

1.2.5定制安装16

1.3配置Nginx19

1.3.1配置文件格式19

1.3.2进程配置20

1.3.3动态模块配置22

1.3.4运行日志配置22

1.3.5 events配置23

1.3.6 http配置23

1.3.7 server配置25

1.3.8 location配置26

1.3.9 fiile配置27

1.3.10 upstream配置27

1.3.11变量28

1.4总结30

第2章Nginx开发准备31

2.1开发环境31

2.1.1 C+++标准31

2.1.2 Boost程序库32

2.2目录结构32

2.3源码特点34

2.3.1代码风格34

2.3.2代码优化34

2.3.3面向对象思想34

2.4使用C++35

2.4.1实现原则35

2.4.2代码风格36

2.4.3编译脚本36

2.5 C++包装类38

2.5.1类定义38

2.5.2构造和析构39

2.5.3成员函数40

2.6总结40

第3章Nginx基础设施41

3.1头文件41

3.1.1 Nginx头文件41

3.1.2 C+++头文件42

3.2整数类型42

3.2.1标准整数类型43

3.2.2自定义整数类型43

3.2.3无效值44

3.2.4 C+++封装44

3.3错误处理47

3.3.1错误码定义48

3.3.2 C+++异常48

3.4内存池50

3.4.1结构定义51

3.4.2操作函数51

3.4.3 C+++封装52

3.4.4清理机制54

3.4.5 C+++内存分配器57

3.5字符串58

3.5.1结构定义59

3.5.2操作函数59

3.5.3 C+++封装61

3.6时间与日期64

3.6.1时间结构定义64

3.6.2时间操作函数64

3.6.3日期结构定义65

3.6.4日期操作函数66

3.6.5 C+++封装时间67

3.6.6 C+++封装日期68

3.7运行日志70

3.7.1结构定义71

3.7.2操作函数71

3.7.3 C+++封装72

3.8总结74

第4章Nginx高级数据结构77

4.1动态数组77

4.1.1结构定义77

4.1.2操作函数79

4.1.3 C+++动态数组79

4.2单向链表83

4.2.1结构定义83

4.2.2操作函数84

4.2.3 C+++迭代器85

4.2.4 C+++单向链表87

4.3双端队列90

4.3.1结构定义90

4.3.2操作函数91

4.3.3 C+++节点93

4.3.4 C+++迭代器95

4.3.5 C+++双端队列97

4.4红黑树101

4.4.1节点结构定义101

4.4.2树结构定义102

4.4.3操作函数103

4.4.4 C+++红黑树104

4.5缓冲区108

4.5.1结构定义108

4.5.2操作函数110

4.5.3 C+++缓冲区111

4.6数据块链113

4.6.1结构定义114

4.6.2操作函数114

4.6.3 C+++节点115

4.6.4 C+++迭代器117

4.6.5 C+++数据块链118

4.7键值对120

4.7.1简单键值对120

4.7.2散列表键值对121

4.8总结121

第5章Nginx开发综述123

5.1最简单的模块123

5.1.1模块设计124

5.1.2配置解析124

5.1.3处理函数126

5.1.4模块集成128

5.1.5编译脚本和命令129

5.1.6测试验证130

5.2开发基本流程131

5.2.1设计131

5.2.2开发132

5.2.3编译133

5.2.4测试验证133

5.2.5调优133

5.2.6流程图133

5.3编译脚本134

5.3.1运行机制134

5.3.2使用的变量135

5.3.3模块脚本135

5.3.4两种脚本格式136

5.3.5旧式编译脚本136

5.4总结137

第6章Nginx模块体系139

6.1模块架构139

6.1.1结构定义139

6.1.2模块的签名141

6.1.3模块的种类142

6.1.4模块的函数指针表143

6.1.5模块的类图144

6.1.6模块的组织形式145

6.1.7模块的初始化147

6.1.8模块的动态加载150

6.2配置解析152

6.2.1结构定义152

6.2.2配置解析的基本流程156

6.2.3配置数据的存储模型157

6.2.4访问配置数据163

6.2.5确定配置数据的位置163

6.2.6配置解析函数165

6.2.7配置数据的合并166

6.2.8配置指令的类型167

6.3源码分析168

6.3.1 ngx_core_module168

6.3.2 ngx_errlog_ module171

6.4 C++封装172

6.4.1 NgxModuleConfiig172

6.4.2 NgxModule176

6.4.3 NgxTake178

6.4.4 NGX MODULE NULL180

6.5 C++开发模块180

6.5.1模块的基本组成180

6.5.2配置信息类181

6.5.3业务逻辑类183

6.5.4模块集成类184

6.5.5实现源文件186

6.5.6增加更多功能187

6.6总结187

第7章NginxHTTP框架综述191

7.1框架简介191

7.1.1模块分类191

7.1.2处理流程192

7.1.3请求结构体194

7.1.4请求的处理阶段195

7.1.5请求的环境数据197

7.2处理引擎198

7.2.1函数原型198

7.2.2处理函数的存储方式198

7.2.3内容处理函数199

7.2.4引擎的数据结构200

7.2.5引擎的初始化201

7.2.6引擎的运行机制202

7.2.7日志阶段的处理205

7.3过滤引擎205

7.3.1函数原型206

7.3.2过滤函数链表206

7.3.3过滤函数的顺序207

7.3.4过滤链表的运行机制209

7.3.5请求体过滤210

7.4源码分析211

7.4.1 ngx_ http_static_ module211

7.4.2 ngx_ http_not_ modifiied fiilter_module212

7.5 C++封装213

7.5.1 NgxModuleCtx213

7.5.2 NgxHttpCoreModule215

7.5.3 NgxFilter217

7.6总结219

第8章NginxHTTP请求处理221

8.1状态码221

8.2请求结构体222

8.3请求行223

8.3.1请求方法223

8.3.2协议版本号224

8.3.3资源标识符224

8.4请求头225

8.5请求体226

8.5.1结构定义226

8.5.2操作函数227

8.6响应头227

8.6.1结构定义228

8.6.2操作函数228

8.7响应体229

8.8源码分析229

8.8.1 ngx_ http_static_ module230

8.8.2 ngx http_ not_ modifiied fiilter_module231

8.9 C++封装232

8.9.1 NgxHeaders232

8.9.2 NgxRequestBody235

8.9.3 NgxRequest236

8.9.4 NgxResponse238

8.10开发handler模块241

8.10.1模块设计241

8.10.2配置信息类241

8.10.3业务逻辑类242

8.10.4模块集成类243

8.10.5实现源文件245

8.10.6编译脚本245

8.10.7测试验证246

8.11开发fiilter模块246

8.11.1模块设计246

8.11.2配置信息类246

8.11.3环境数据类247

8.11.4业务逻辑类248

8.11.5模块集成类251

8.11.6实现源文件252

8.11.7编译脚本253

8.11.8测试验证253

8.12总结253

第9章NginxHTTP请求转发255

9.1框架简介255

9.1.1工作原理256

9.1.2请求结构体257

9.1.3上游结构体258

9.1.4上游配置参数260

9.2请求转发机制261

9.2.1回调函数261

9.2.2初始化263

9.2.3设置连接参数264

9.2.4启动连接265

9.2.5处理数据265

9.3负载均衡机制266

9.3.1结构定义267

9.3.2初始化模块入口271

9.3.3初始化地址列表272

9.3.4初始化算法274

9.3.5执行算法274

9.4源码分析275

9.4.1 ngx_http_ memcached_ module275

9.4.2 ngx httpv upstream_ ip_ hash_module278

9.5 C++封装281

9.5.1 NgxUpstream281

9.5.2 NgxUpstreamHelper283

9.5.3 NgxHttpUpstreamModule285

9.5.4 NgxLoadBalance287

9.6开发upstream模块288

9.6.1模块设计288

9.6.2配置信息类288

9.6.3业务逻辑类289

9.6.4模块集成类292

9.6.5实现源文件293

9.6.6编译脚本293

9.6.7测试验证294

9.7开发load-balance模块294

9.7.1模块设计294

9.7.2配置信息类294

9.7.3业务逻辑类295

9.7.4模块集成类297

9.7.5实现源文件298

9.7.6编译脚本299

9.7.7测试验证299

9.8总结299

第10章NginxHTTP子请求301

10.1子请求简介301

10.1.1工作原理302

10.1.2请求结构体303

10.1.3回调函数304

10.1.4待处理请求链表306

10.1.5子请求存储结构306

10.2子请求运行机制307

10.2.1创建子请求307

10.2.2处理引擎311

10.2.3数据整理312

10.3 C++封装314

10.3.1 NgxSubRequestHandler314

10.3.2 NgxSubRequest316

10.4数据回传模块317

10.4.1模块设计317

10.4.2环境数据类317

10.4.3业务逻辑类319

10.4.4模块集成类321

10.4.5编译脚本322

10.5在模块里使用子请求323

10.5.1模块设计323

10.5.2配置信息类323

10.5.3业务逻辑类324

10.5.4测试验证327

10.6总结328

第11章Nginx变量329

11.1结构定义329

11.1.1变量值329

11.1.2变量访问对象330

11.1.3变量的存储331

11.1.4请求结构体331

11.2运行机制332

11.2.1注册变量333

11.2.2获取变量333

11.2.3修改变量334

11.3复杂变量334

11.3.1结构定义334

11.3.2运行机制335

11.4 C++封装335

11.4.1 NgxVariableValue336

11.4.2 NgxVariable337

11.4.3 NgxVarManager339

11.4.4 NgxVariables340

11.4.5 NgxComplexValue340

11.5在模块里使用变量341

11.5.1添加变量341

11.5.2读写变量343

11.6在模块里使用复杂变量343

11.6.1配置信息类344

11.6.2业务逻辑类344

11.6.3模块集成类344

11.6.4测试验证344

11.7总结345

第12章Nginx辅助设施347

12.1摘要算法347

12.1.1 MD5347

12.1.2 SHA-1348

12.1.3 MurmurHash349

12.1.4 C+++封装349

12.2编码和解码352

12.2.1 CRC校验352

12.2.2 Base64编码解码353

12.2.3 URI编码解码354

12.2.4 HTML和JSON编码355

12.3正则表达式356

12.4共享内存356

12.4.1结构定义357

12.4.2操作函数357

12.4.3 C+++共享内存358

12.5总结359

第13章Nginx进程机制361

13.1基本系统调用361

13.1.1 errno361

13.1.2 getrlimit362

13.2进程系统调用362

13.2.1 getpid362

13.2.2 fork363

13.2.3 waitpid363

13.3信号系统调用364

13.3.1 kill364

13.3.2 sigaction365

13.3.3 sigsuspend365

13.4结构定义365

13.4.1 ngx_ cycle t365

13.4.2 ngx_core_ conf t366

13.4.3 ngx_process t367

13.5全局变量368

13.5.1命令行相关368

13.5.2操作系统相关369

13.5.3进程功能相关369

13.5.4信号功能相关370

13.6启动过程370

13.6.1基本流程370

13.6.2解析命令行371

13.6.3版本和帮助信息372

13.6.4初始化cycle372

13.6.5测试配置374

13.6.6发送信号374

13.6.7守护进程化374

13.6.8启动工作进程375

13.6.9流程图376

13.7信号处理377

13.7.1信号处理函数377

13.7.2发送信号378

13.7.3处理信号378

13.8单进程模式379

13.8.1 single进程379

13.8.2 single进程流程图381

13.9多进程模式382

13.9.1产生子进程382

13.9.2 master进程383

13.9.3 master进程流程图387

13.9.4 worker进程388

13.9.5 worker进程流程图389

13.10总结390

第14章Nginx事件机制393

14.1基本系统调用393

14.1.1 errno394

14.1.2 ioctl394

14.1.3 setitimer394

14.1.4 gettimeofday395

14.2 socket系统调用395

14.2.1 socket396

14.2.2 bind396

14.2.3 listen396

14.2.4 accept396

14.2.5 connect397

14.2.6 recv397

14.2.7 send397

14.2.8 setsockopt398

14.2.9 close398

14.2.10函数关系图398

14.3 epoll系统调用399

14.3.1 epoll_ create400

14.3.2 epoll_ctl400

14.3.3 epoll_ wait401

14.3.4 LT和ET401

14.3.5函数关系图402

14.4结构定义403

14.4.1 ngx_ event t403

14.4.2 ngx connection_ t404

14.4.3 ngx_listening_ t405

14.4.4 ngx_ cycle t407

14.4.5 ngx_ os_ io_ t408

14.4.6 ngx_event_ actions t411

14.4.7 ngx_posted events413

14.4.8结构关系图415

14.5定时器415

14.5.1红黑树415

14.5.2操作函数416

14.5.3超时处理416

14.6模块体系419

14.6.1函数指针表419

14.6.2模块的组织形式420

14.6.3核心配置422

14.6.4 epoll模块423

14.7全局变量425

14.7.1更新时间相关425

14.7.2事件机制相关426

14.7.3负载均衡相关426

14.7.4统计相关427

14.8运行机制427

14.8.1模块初始化427

14.8.2进程初始化429

14.8.3基本参数初始化429

14.8.4 epoll初始化430

14.8.5连接池初始化431

14.8.6监听端口初始化433

14.8.7初始化流程图434

14.8.8添加事件435

14.8.9删除事件439

14.8.10处理事件440

14.8.11接受连接444

14.8.12负载均衡447

14.8.13避免阻塞452

14.9总结452

第15章Nginx多线程机制455

15.1 eventfd系统调用455

15.2 pthread系统调用456

15.2.1 pthread_create456

15.2.2 pthread exit457

15.3结构定义457

15.3.1 ngx_thread_ task_ t457

15.3.2 ngx_thread_pool_queue_t458

15.3.3 ngx_thread_pool_t458

15.3.4结构关系图459

15.4事件通知460

15.4.1函数接口460

15.4.2初始化460

15.4.3发送通知461

15.4.4处理通知462

15.5运行机制463

15.5.1完成任务队列463

15.5.2创建线程池463

15.5.3创建任务464

15.5.4投递任务465

15.5.5执行任务466

15.5.6任务完成回调468

15.5.7销毁线程池468

15.6在模块里使用多线程469

15.6.1模块设计470

15.6.2配置信息类470

15.6.3业务逻辑类470

15.6.4测试验证474

15.7总结474

第16章Nginx Stream机制477

16.1模块体系477

16.1.1函数指针表477

16.1.2基础模块478

16.1.3核心模块480

16.1.4结构关系图481

16.1.5存储模型482

16.2监听端口483

16.2.1结构定义483

16.2.2解析配置485

16.2.3启动监听489

16.3处理引擎491

16.3.1阶段定义491

16.3.2函数原型491

16.3.3处理函数的存储方式492

16.3.4引擎数据结构492

16.3.5结构关系图493

16.3.6引擎的初始化493

16.4过滤引擎495

16.4.1函数原型495

16.4.2过滤函数链表495

16.5运行机制496

16.5.1会话结构体496

16.5.2创建会话497

16.5.3执行引擎500

16.5.4通用阶段处理501

16.5.5预读数据502

16.5.6产生响应数据506

16.5.7过滤数据506

16.5.8 结束会话506

16.6开发stream模块507

16.6.1 C+++封装507

16.6.2 discard协议508

16.6.3 time协议510

16.6.4 chargen协议512

16.7总结514

第17章NginxHTTP机制517

17.1结构定义517

17.1.1 ngx_ http_state_e517

17.1.2 ngx_ http_ connection_t518

17.1.3 ngx_http_request_ t518

17.2初始化连接519

17.2.1建立连接520

17.2.2等待数据521

17.2.3读取请求头524

17.3执行引擎528

17.3.1初始化引擎528

17.3.2通用阶段530

17.3.3改写阶段531

17.3.4访问控制阶段532

17.3.5内容产生阶段533

17.4处理请求体534

17.4.1丢弃缓冲区数据535

17.4.2读取并丢弃数据536

17.4.3读事件处理函数537

17.4.4启动丢弃处理538

17.5发送数据540

17.5.1发送初始化540

17.5.2事件处理函数541

17.6结束请求543

17.6.1释放请求资源543

17.6.2检查引用计数结束请求544

17.6.3检查状态结束请求545

17.6.4综合处理结束请求546

17.7总结548

第18章Nginx与设计模式551

18.1设计模式简介551

18.2框架级别的模式551

18.3业务级别的模式553

18.4代码级别的模式554

18.5总结556

第19章OpenResty开发557

19.1简介557

19.1.1历史558

19.1.2版本559

19.1.3组成559

19.1.4性能561

19.1.5安装562

19.1.6目录结构563

19.1.7命令行工具564

19.1.8参考手册565

19.2 Lua语言566

19.2.1注释566

19.2.2数据类型567

19.2.3变量568

19.2.4运算569

19.2.5语句570

19.2.6函数572

19.2.7表574

19.2.8标准库575

19.2.9模块576

19.3 LuaJIT577

19.3.1 continue578

19.3.2 bit578

19.3.3 ffii579

19.4 Lua模块581

19.4.1指令简介581

19.4.2配置指令581

19.4.3功能指令582

19.4.4指令关系图584

19.4.5应用开发流程584

19.5功能接口585

19.5.1运行日志585

19.5.2时间与日期586

19.5.3变量587

19.5.4正则表达式587

19.5.5请求处理588

19.5.6请求转发590

19.5.7子请求592

19.5.8 定时器592

19.5.9共享内存593

19.6应用实例594

19.6.1处理请求594

19.6.2过滤请求595

19.6.3转发请求596

19.6.4子请求597

19.7 Stream Lua模块598

19.7.1功能接口598

19.7.2 discard599

19.7.3 time599

19.7.4 chargen600

19.7.5 echo600

19.8 lua-resty库601

19.8.1 core601

19.8.2 cjson602

19.8.3 redis603

19.9总结603

第20章 结束语605

20.1本书的遗憾605

20.2下一步605

20.3临别赠言606

附录A推荐书目607

附录B GDB调试简介609

附录C Nginx C++模块简介611

附录D Nginx的字符串格式化613

附录E nginScript简介615

热门推荐