《深入理解Nginx模块开发》 学习笔记(一)
Nginx是什么
- Nginx是由来自俄罗斯的Igor Sysoev 使用C语言开发并开源,而且赋予其最自由的2-clause BSD-like license 许可证;
- Nginx是一个跨平台的Web服务器;
- Nginx使用基于事件驱动的架构,保证并发处理百万级的TCP连接;
- 高度模块化的设计和自由的许可证使得扩展Nginx功能的第三方模块层出不穷。
为什么选择Nginx
- 相较于其他Web服务器,Nginx在高峰期可以更快的响应请求;
- Nginx的设计极具扩展性,由多个不同功能、不同层次、不同类型且耦合度极低的模块组成,且嵌入在二进制文件中执行,具备优秀的性能;
- Nginx的高可靠性,源于其核心框架代码的优秀设计、模块设计的简单性,官方提供的模块非常稳定、每个Worker进程相对独立,在出错时可由master进程快速拉起新的worker进程提供服务;
- 低内存消耗
- 单机支持10万以上的并发连接;
- 热部署,master管理进程与worker进程的分离设计,支持不停服务就更新配置项、更换日志文件;
- 最自由的BSD许可协议;
准备工作
操作系统
-Linux 2.6及以上版本 (支持epoll)
必备软件
(1)GCC编译器
sudo apt-get install build-essential
必需的编译工具
(2)PCRE库
sudo apt-get install libpcre3 libpcre3-dev
如果在配置文件nginx.conf使用正则表达式,那么在编译Nginx时就必须把PCRE库编译进Nginx
(3)zlib库
sudo apt-get install zlib1g-dev
用于对HTTP的内容做gzip格式的压缩
(4)OpenSSL库
sudo apt-get install openssl libssl-dev
用于在更安全的SSL协议上传输HTTP
磁盘目录
- Nginx源码存放目录
- Nginx编译阶段产生的中间文件目录
- 部署目录(/usr/local/nginx)
- 日志文件存放目录
Linux内核参数的优化
默认的Linux内核参数考虑的时最通用的场景,不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数用于支持Nginx的高性能。