Nginx功能模块说明
1、Nginx 核心功能模块(Core functionality)
Nginx核心功能模块负责Nginx的全局应用,主要对应主配置文件的核心层(Main层)和事件(Events)层,这里有很多 Nginx 必需的全局参数配置。
有关核心功能模块的官方文档为:http://nginx.org/en/docs/ngx_core_module.html
2、标准的 HTTP 功能模块集合
这些标准的 HTTP 功能模块,虽然不是 Nginx 软件所必需的,但都是很常用的,因此绝大部分默认情况都会自动安装到 Nginx 软件中,见下表。保留软件的默认配置就好,不建议改动,除非你明确知道你在做什么,有什么额外影响。
企业场景常用的 Nginx HTTP 功能模块汇总
Nginx HTTP 功能模块 | 模块说明 |
---|---|
ngx_http_core_module | 包括一些核心的 HTTP 参数配置,对应 Nginx 的配置为 HTTP 区块部分 |
ngx_http_access_module | 访问控制模块,用来控制网站用户对 Nginx 的访问 |
ngx_http_gzip_module | 压缩模块,对 Nginx 返回的数据压缩,属于性能优化模块 |
ngx_http_fastcgi_module | FastCGI 模块,和动态应用相关,如 PHP |
ngx_http_proxy_module | proxy 代理模块 |
ngx_http_upstream_module | 负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查 |
ngx_http_rewrite_module | URL 地址重写模块(伪静态) |
ngx_http_limit_conn_module | 限制用户并发连接数及请求数模块 |
ngx_http_limit_req_module | 根据定义的 key 限制 Nginx 请求过程的速率 |
ngx_http_log_module | 访问日志模块,以指定的格式记录 Nginx 客户访问日志等信息 |
ngx_http_auth_basic_module | web 认证模块,设置 Web 用户通过账号索码访问 Nginx |
ngx_http_ssl_module | ssl模块,用于加密的 HTTP 连接,如 https |
ngx_http_stub_status_module | 记录 Nginx 基本访问状态信息等的模块 |
在生产环境中,配置、调整及优化 Nginx 软件,主要就是根据这此模块的功能修改相应的参数来实现的。
官方文档:https://nginx.org/en/docs/
Nginx目录结构及配置文件介绍
注:以下介绍基于源码编译安装的nginx
[root@web01 ~]# tree /app/nginx
/app/nginx
├── client_body_temp
├── conf #//nginx所有的配置文件的目录,重要
│ ├── fastcgi.conf #fastcgi相关参数的配置文件
│ ├── fastcgi.conf.default
│ ├── fastcgi_params #fastcgi的参数文件
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types #媒体类型文件
│ ├── mime.types.default
│ ├── nginx.conf #nginx默认的主配置文件
│ ├── nginx.conf.default
│ ├── scgi_params #scgi相关参数文件
│ ├── scgi_params.default
│ ├── uwsgi_params #uwsgi相关参数文件,配置Python环境可能会用到
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp #//fastcgi临时数据目录
├── html #//这是编译安装时nginx的默认站点目录
│ ├── 50x.html #错误页面优雅替代显示文件,例如:出现 502 错误时会调用此页面
│ └── index.html #默认的首页文件,在实际环境中,大家习惯用(注意字眼不是必须) index.html、index.php、index.jsp来做网站的首页文件。
├── logs #//nginx默认的日志存放目录,包括错误日志及访问日志
│ ├── access.log #访问日志
│ ├── error.log #错误日志
│ └── nginx.pid #nginx的pid文件,nginx进程启动后,会把所有进程的pid号写到此文件
├── proxy_temp #//临时目录
├── sbin #//命令目录
│ └── nginx #启动命令
├── scgi_temp
└── uwsgi_temp
# 注:
所有default结尾的都是备份文件,未注释的生产很少用,可以不必理会。
koi-utf、koi-win、win-utf:这3个文件是 KOI8-R 编码转换的映射文件,因为 Nginx 的作者是俄罗斯人,在 Unicode 流行之前,KOI8-R 是使用最为广泛的俄语编码。
PS:以yum官方源安装的nginx配置文件是在/etc/nginx下
[root@web02 ~]# tree /etc/nginx/
/etc/nginx/
├── conf.d
│ └── default.conf
├── default.d
├── fastcgi_params
├── mime.types
├── modules -> ../../usr/lib64/nginx/modules
├── nginx.conf
├── nginx.conf.rpmsave
├── scgi_params
└── uwsgi_params
Nginx的主配置文件
Nginx主配置文件nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束。配置文件中main区块(层)位于最上面,main层后面有Events层、http层等,在http层中又包含一个或多个server层,每个server层中又可有一个或多个location层。
nginx.conf是Nginx最重要的配置文件之一。必须搞定它。下面以yum官方源安装的nginx主配置文件为例详解。
[root@web02 ~]# grep -v '^$|#' /etc/nginx/nginx.conf
## 核心层(main层)
user nginx; # nginx的启动用户
worker_processes auto; # nginx运行的w