Nginx是一款轻量级、高性能的HTTP和反向代理服务器,同时也是IMAP/POP3/SMTP代理服务器,核心优势在于高并发、低内存占用、稳定性强,其核心功能围绕"连接处理"和"请求转发"展开
一、HTTP服务器(Web服务器)
这是Nginx最基础的功能,用于接收客户端(浏览器等)的HTTP请求,返回静态资源(HTML、CSS、JS、图片、视频等),替代Apache等传统Web服务器,核心特点是高效处理静态资源。
-
静态资源处理:直接读取服务器本地文件并返回给客户端,无需经过后端程序(如PHP、Java),处理速度极快。支持按文件类型、路径配置缓存策略,减少重复读取,提升响应速度。
-
虚拟主机(Virtual Host):在一台服务器上部署多个网站,通过"域名+端口"区分不同站点,无需为每个网站单独配置服务器。分为两种类型:
-
基于域名的虚拟主机(最常用):同一IP、同一端口,通过不同域名(如www.xxx.com、blog.xxx.com)区分站点;
-
基于端口的虚拟主机:同一IP、不同端口(如80端口、8080端口)区分站点。
-
-
HTTP协议相关配置:支持配置HTTP请求方法(GET、POST等)、HTTP版本(HTTP/1.1、HTTP/2)、请求头、响应头,可自定义404、502等错误页面,优化用户体验。
二、反向代理(Reverse Proxy)
反向代理是Nginx最核心、最常用的功能之一。客户端发送请求到Nginx,Nginx将请求转发到后端的应用服务器(如Tomcat、Node.js、PHP-FPM),后端服务器处理后将结果返回给Nginx,再由Nginx转发给客户端。客户端无需知道后端服务器的地址,仅与Nginx交互。
-
核心作用:
-
隐藏后端服务器:提高后端服务器的安全性,避免直接暴露在公网中;
-
负载均衡:将多个客户端请求分发到多台后端服务器,避免单台服务器过载,提升系统可用性和并发处理能力;
-
缓存静态响应:将后端服务器返回的静态资源(如接口返回的JSON、图片)缓存到Nginx,后续相同请求直接返回缓存,减少后端压力。
-
-
关键配置 :通过
proxy_pass指令指定后端服务器地址(如http://127.0.0.1:8080),配合proxy_set_header指令传递客户端请求头(如真实IP、Host),确保后端服务器能获取正确的客户端信息。
三、负载均衡(Load Balancing)
负载均衡是反向代理的延伸功能,当后端部署多台应用服务器时,Nginx通过预设的负载均衡策略,将客户端请求合理分配到不同的后端服务器,实现"分流减压",提升系统的并发能力和稳定性。
1. 常用负载均衡策略
-
轮询(默认):将请求依次分发到后端每台服务器,适用于后端服务器性能一致的场景,简单高效,但无法根据服务器负载动态调整。
-
权重(weight):为每台后端服务器设置权重值(权重越高,分配到的请求越多),适用于后端服务器性能不一致的场景(如高性能服务器权重设高,低性能服务器权重设低)。
-
IP哈希(ip_hash):根据客户端的IP地址进行哈希计算,将同一客户端的请求始终分发到同一台后端服务器,适用于需要会话保持的场景(如用户登录后,后续请求需访问同一台服务器获取会话信息)。
-
最少连接(least_conn):将请求分发到当前连接数最少的后端服务器,动态适应服务器负载,适用于后端服务器负载波动较大的场景。
2. 健康检查
Nginx支持后端服务器健康检查(通过proxy_next_upstream等指令),当某台后端服务器故障(如宕机、无响应)时,Nginx会自动将请求转发到其他健康的服务器,避免服务中断,提升系统可用性。
四、动静分离
动静分离是优化Web系统性能的关键手段,核心是将"静态资源"(HTML、CSS、JS、图片等)和"动态资源"(如PHP、Java接口、数据库查询结果)分开处理,由Nginx直接处理静态资源,后端服务器仅处理动态资源,减少后端服务器的压力。
-
实现方式:通过Nginx配置,判断请求的资源类型(如后缀为.css、.js、.jpg的为静态资源),静态资源直接由Nginx返回,动态资源(如后缀为.php、.jsp)转发到后端应用服务器处理。
-
优势:静态资源处理速度快,无需占用后端服务器资源;后端服务器专注处理动态逻辑,提升整体系统的响应速度和并发能力。
五、缓存功能
Nginx支持对静态资源、后端接口响应结果进行缓存,缓存到本地磁盘或内存中,后续相同请求无需重新读取资源或请求后端服务器,直接返回缓存内容,大幅提升响应速度,减少服务器负载。
-
缓存对象:静态资源(优先缓存)、后端接口返回的动态内容(如不变的用户信息、商品列表)。
-
关键配置 :通过
proxy_cache指令开启缓存,proxy_cache_valid指令设置不同状态码的缓存时间(如200状态码缓存1小时,404状态码缓存1分钟),proxy_cache_key指令定义缓存的key(如根据请求URL、IP生成唯一key)。 -
缓存清除:Nginx本身不支持主动清除缓存,需通过第三方模块(如ngx_cache_purge)或删除缓存文件的方式清除。
六、SSL/TLS加密(HTTPS)
Nginx支持配置SSL/TLS证书,实现HTTP请求到HTTPS的加密传输,保障数据在客户端和服务器之间的安全,防止数据被窃取、篡改。
-
核心配置 :通过
listen 443 ssl开启HTTPS端口,ssl_certificate指定SSL证书路径,ssl_certificate_key指定证书私钥路径,同时可配置SSL协议版本、加密算法,提升安全性。 -
附加功能 :支持HTTP自动跳转HTTPS(通过
return 301指令),确保所有请求都通过加密通道传输。
七、其他核心辅助功能
-
URL重写(Rewrite) :通过
rewrite指令修改请求URL,实现URL美化、地址跳转、防盗链等功能(如将动态URL伪装成静态URL,防止图片被其他网站盗用)。 -
防盗链 :通过
valid_referers指令限制请求的来源(Referer),仅允许指定域名的请求访问资源,防止资源被非法盗用。 -
限流(Limit) :通过
limit_req、limit_conn指令限制客户端的请求频率和并发连接数,防止恶意请求(如DDOS攻击)导致服务器过载。 -
日志管理:支持记录访问日志(access_log)和错误日志(error_log),可自定义日志格式,方便排查问题、分析用户行为。
八、核心功能总结
Nginx的核心价值在于"高效、灵活、稳定",其所有核心功能都围绕"提升并发处理能力、降低服务器负载、保障服务稳定"展开:
-
基础功能:HTTP服务器(静态资源处理、虚拟主机);
-
核心核心:反向代理+负载均衡(分流减压、隐藏后端);
-
性能优化:动静分离、缓存功能;
-
安全保障:HTTPS加密、防盗链、限流;
-
辅助功能:URL重写、日志管理。
实际应用中,Nginx常作为Web系统的"入口",承接所有客户端请求,再根据请求类型分发到后端服务器,是高并发Web系统不可或缺的核心组件。