nginx概念
一、什么是nginx
1.nginx是一个开源且高性能,可靠的HTTP中间件代理服务。
2.中间件:对web可以实现集群,缓存服务,安全应用起到中间代理的作用。
3.常见的中间件服务:Apache,IIS,Nginx。
二、Nginx特性
1.跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本。
2.配置异常简单,非常容易上手。配置风格跟程序开发一样,神一般的配置。
3.非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)。
4.事件驱动:通信机制采用epoll模型,支持更大的并发连接。
5.master/worker结构:一个master进程,生成一个或多个worker进程。
6.内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)。
7.成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
8.内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
9.节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
10.稳定性高:用于反向代理,宕机的概率微乎其微。
三、Nginx工作原理
1.Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。
2.接收来自外界的信号,向各worker进程发送信号,每个进程都有可能来处理这个连接。
3.master 进程能监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程。
四、Nginx目录结构
├── client_body_temp
├── conf # Nginx所有配置文件的目录
│ ├── fastcgi.conf # fastcgi相关参数的配置文件
│ ├── fastcgi.conf.default # fastcgi.conf的原始备份文件
│ ├── fastcgi_params # fastcgi的参数文件
│ ├── fastcgi_params.default # 所有结尾为default的文件都是备份文件
│ ├── mime.types # 媒体类型
│ ├── mime.types.default #
│ ├── nginx.conf # Nginx主配置文件
│ ├── nginx.conf.default
│ ├── scgi_params # scgi相关参数文件
│ ├── scgi_params.default
│ ├── uwsgi_params # uwsgi相关参数文件
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp # fastcgi临时数据目录
├── html # Nginx默认站点目录
│ ├── 50x.html # 错误页面优雅替代显示文件,例如当出现502错误时会调用此页面
│ └── index.html # 默认的首页文件
├── logs # Nginx日志目录
│ ├── access.log # 访问日志文件
│ ├── error.log # 错误日志文件
│ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp # 临时目录
├── sbin # Nginx命令目录
│ └── nginx # Nginx的启动命令
├── scgi_temp # 临时目录
└── uwsgi_temp # 临时目录
五、Nginx编译参数
--prefix=PATH 设定安装目录
--sbin-path=PATH 设定程序文件目录
--conf-path=PATH 设定配置文件(nginx.conf)目录
--error-log-path=PATH 设定错误日志目录
--pid-path=PATH 设定pid文件(nginx.pid)目录
--lock-path=PATH 设定lock文件(nginx.lock)目录
--user=USER 设定程序运行的用户环境(www)
--group=GROUP 设定程序运行的组环境(www)
--builddir=DIR 设定程序编译目录
1.nginx是一个开源且高性能,可靠的HTTP中间件代理服务。
2.中间件:对web可以实现集群,缓存服务,安全应用起到中间代理的作用。
3.常见的中间件服务:Apache,IIS,Nginx。
二、Nginx特性
1.跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本。
2.配置异常简单,非常容易上手。配置风格跟程序开发一样,神一般的配置。
3.非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)。
4.事件驱动:通信机制采用epoll模型,支持更大的并发连接。
5.master/worker结构:一个master进程,生成一个或多个worker进程。
6.内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)。
7.成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
8.内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
9.节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
10.稳定性高:用于反向代理,宕机的概率微乎其微。
三、Nginx工作原理
1.Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。
2.接收来自外界的信号,向各worker进程发送信号,每个进程都有可能来处理这个连接。
3.master 进程能监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程。
四、Nginx目录结构
├── client_body_temp
├── conf # Nginx所有配置文件的目录
│ ├── fastcgi.conf # fastcgi相关参数的配置文件
│ ├── fastcgi.conf.default # fastcgi.conf的原始备份文件
│ ├── fastcgi_params # fastcgi的参数文件
│ ├── fastcgi_params.default # 所有结尾为default的文件都是备份文件
│ ├── mime.types # 媒体类型
│ ├── mime.types.default #
│ ├── nginx.conf # Nginx主配置文件
│ ├── nginx.conf.default
│ ├── scgi_params # scgi相关参数文件
│ ├── scgi_params.default
│ ├── uwsgi_params # uwsgi相关参数文件
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp # fastcgi临时数据目录
├── html # Nginx默认站点目录
│ ├── 50x.html # 错误页面优雅替代显示文件,例如当出现502错误时会调用此页面
│ └── index.html # 默认的首页文件
├── logs # Nginx日志目录
│ ├── access.log # 访问日志文件
│ ├── error.log # 错误日志文件
│ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp # 临时目录
├── sbin # Nginx命令目录
│ └── nginx # Nginx的启动命令
├── scgi_temp # 临时目录
└── uwsgi_temp # 临时目录
五、Nginx编译参数
--prefix=PATH 设定安装目录
--sbin-path=PATH 设定程序文件目录
--conf-path=PATH 设定配置文件(nginx.conf)目录
--error-log-path=PATH 设定错误日志目录
--pid-path=PATH 设定pid文件(nginx.pid)目录
--lock-path=PATH 设定lock文件(nginx.lock)目录
--user=USER 设定程序运行的用户环境(www)
--group=GROUP 设定程序运行的组环境(www)
--builddir=DIR 设定程序编译目录