一、Nginx简介
Nginx是一个很好的高性能Web和反向大力服务器,它具有很多非常优越的特性:在高连接并发的情况下,Nginx是Apahe服务器的不错的替代品:Nginx在美国是虚拟主机生意选择的软件平台之一。能够支持50000个并发连接数的响应,Nginx选择了Epoll and kqueue作为开发模型。
Nginx作为负载据衡服务器:Nginx既可以在内部直接支持也可以直接对外进行服务,也可以支持作为HTTP代理服务器对外进行服务。Ngxinx采用C语言编写,不论是系统资源开销还是CPIU使用效率都比Perlbal(事务处理模型)要好很多。
二、Nginx特性
模块化设计:较好的扩展性:支持众多的模块,和第三方模块
高可靠:主控进程(Master)负责解析配置文件、启动和Socke、生成多个工作线程(Work),工作线程来接收、处理用户请求;【Master --> Work】
低内存消耗:1000个Keeep-alive模式下的connection,仅需要2.5MB内存
支持热部署:不停机而更新配置文件、日志文件滚动、升级程序版本
支持 时间驱动:支持AIO、mmap等性能优化
高并发连接:官方测试能够支撑5万并发连接数,在实际生产环境中跑到2~3万并发连接
三、Ngxin基本功能
- 静态资源的web服务器,能缓存打开的文件 描述符
- http, smtp, pop3协议的反向代理服务器,缓存、负载均衡;
- 支持FastCGI (fpm)
- 模块化,非DSO机制,过滤器zip,SSI及图像大小调整;
- 支持SSL
四、扩展功能
- 基于名称和IP的虚拟主机;
- 支持keepalive
- 支持平滑升级
- 定制访问日志 ,支持使用日志缓冲区提高日志存储性能
- 支持url rewrite
- 支持路径别名
- 支持基于IP及用户的访问控制
- 支持速率限制,支持并发数限制
五、Nginx基本架构
nginx: 非阻塞、事件驱动、一个master生成一个或多个worker, 每个worker响应n个(worker * n)请求;
支持基于事件驱动: epoll(边缘触发)、kqueue、/dev/poll;
- Epoll:主要是在Linxu上使用
- Kqueue:主要是在BSD Unix上使用
- /dev/poll:主要是在solaris Unix上使用
支持IO复用器支持:Select、Poll、Rt Signal
支持sendfile(默认发送很小不会超过KB), sendfile64(可以支持更大的)
- IO调用
- 支持SendFile之后
支持AIO
支持MMAP
六、Nginx安装
1、安装环境
需要gcc系统自带了,没有自带的需要先安装:yum install gcc-c++
需要安装pcre:yum install pcre*
需要安装zlib:yum install zlib zlib-devel
如果需要支持ssl的话,需要安装Open SSL:安装命令:yum -y install zlib zlib-devel openssl openssl-deve
2、下载源码包地址
下载源码包地址:https://nginx.org/en/download.html
3、解压编译安装
解压:tar -xvf nginx-1.23.0.tar.zip
编译安装:./configure --prefix=/app/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_flv_module --with-http_image_filter_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --error-log-path=/data/logs/nginx/error.log --http-log-path=/data/logs/nginx/access.log & make & make install
4、访问端口
七、Nginx常见的编译模块
./configure --help #查看可以是编译的模块
--with-http:开启某个模块
--without-http:默认启用关闭的使用without
八、启动命令
测试配置文件:./nginx/sbin/nginx -t
启动:./nginx/sbin/nginx停止:./nginx/sbin/nginx -s stop 或者nginx -s quit
重启:./nginx/sbin/nginx -s reload