如何高效学习Nginx并总结其核心知识点?
摘要:蛟龙未遇,潜水于鱼鳖之间;君子失时,拱手于小人之下。 导航 1 工具介绍 2 配置结构 3 模块指令 4 应用场景 4.1 Web 服务器 4.2 文件服务器 4.3 反向代理 4.4 负载均衡 4.5 FastCGI 4.6 四层代理 5
蛟龙未遇,潜水于鱼鳖之间;君子失时,拱手于小人之下。
导航
1 工具介绍
2 配置结构
3 模块指令
4 应用场景
4.1 Web 服务器
4.2 文件服务器
4.3 反向代理
4.4 负载均衡
4.5 FastCGI
4.6 四层代理
5 杂七杂八
1、工具介绍
Nginx 是一款轻量级的 Web 服务器、反向代理服务器、邮件代理服务器,它的出现完美地解决了“传统 Web 服务器在高并发连接下性能不足”的问题。
而相比于 Apache 这个老牌对手,它最大的优势便是高并发、内存占用少,除此之外在文档完善方面和模块丰富方面,它还是不及 Apache。
2、配置结构
Nginx 默认的配置文件只需一个 /etc/nginx/nginx.conf 文件即可,但一些 Linux 发行商为了方便参数维护,故一般会对其进行分割以形成模块化结构的配置文件,如下面的 Debian 系统:【注意:不同发行版的模块化结构各有所不同。】
/etc/nginx
├── nginx.conf #主配置的入口点
├── conf.d/ #可在 HTTP 区域内配置的参数,亦可在此处单独添加配置
├── mime.types
├── sites-available/ #可用的虚拟主机
├── sites-enabled/ #启用的虚拟主机
├── modules-available/ #可用的模块配置
├── modules-enabled/ #启用的模块配置
├── snippets/ #启用 SSL 证书
上面介绍了配置文件的目录结构,下面则介绍 nginx.conf 文件整体的用法结构:
# Nginx 全局配置区域
events {
#Event 全局配置区域
}
http {
# HTTP 全局配置区域
upstream backend {
#代理池区域
}
server {
# 虚拟主机全局配置区域
location / {
# URI 路由配置区域
}
}
}
stream {
# 流代理全局配置(基于 TCP 四层的代理)
upstream backend {
#代理池区域
}
server {
# 代理主机全局配置区域
}
}
注意:在 Nginx 的配置文件中,http、stream 块指令只能存在一次,不能像 server 那样可以同时存在多个。
3、模块指令
Nginx 最核心的设计之一就是它的模块体系,几乎所有功能都是由模块提供的。可以理解成:Nginx 本体很小,功能全靠模块拼装。 通常我们把常用模块分成 核心模块、HTTP 模块、Stream 模块 三类来看最清晰。
核心模块
Core functionality:提供 Nginx 最基本的功能,即上述 Nginx 全局配置区域 的指令。
HTTP 模块
ngx_http_core_module:提供 HTTP 服务最 基本 的功能。【相关指令:listen、server、location、root】
ngx_http_ssl_module:为 HTTP 服务提供 传输加密 的功能。【相关指令:listen 443 ssl】
ngx_http_index_module:为 HTTP 服务提供 默认页面加载 的功能。【相关指令:index】
ngx_http_rewrite_module:为 HTTP 服务提供 链接重定向 的功能。【相关指令:if、rewrite、return】
ngx_http_access_module:为 HTTP 服务提供 访问日志记录 的功能。【相关指令:access_log、log_format。注意,该模块不包括错误日志记录的功能,该功能属于 Nginx Core 模块的功能,而非 HTTP Core 模块。】
ngx_http_auth_basic_module:为 HTTP 服务提供 基本身份认证 的功能。【相关指令:auth_basic】
ngx_http_access_module:为 HTTP 服务提供 基于 IP 的访问控制 功能。【相关指令:deny、allow】
ngx_http_geoip_module:为 HTTP 服务提供 基于城市的访问控制 功能,但需配合 rewrite 模块实现。【相关指令:geoip_country、geoip_city,该模块提供更多的其实是一些变量。
