Nginx 基础概念
Nginx 诞生于 2002 年,由俄罗斯软件工程师 Igor Sysoev 开发,最初是为解决 C2Net 公司网站性能瓶颈问题而设计,2004 年发布第一个公开版本。它是一款开源的高性能 Web 服务器软件,同时具备反向代理、负载均衡、HTTP 缓存等多种强大功能。Nginx 采用异步非阻塞的事件驱动模型,这种设计使得它在处理大量并发连接时,能以较低的资源消耗提供出色的响应速度,这也是 Nginx 在性能上优于许多传统 Web 服务器的关键原因。
Nginx 核心功能
反向代理
反向代理是 Nginx 的核心功能之一。当客户端向服务器发送请求时,请求先到达 Nginx,Nginx 根据预先配置的规则,将请求转发到相应的后端应用服务器。然后,Nginx 接收后端服务器的响应,并将其返回给客户端。从客户端视角看,所有请求都像是由 Nginx 直接提供服务,客户端并不知道请求实际是由后端哪台服务器处理的。这种方式不仅能隐藏后端服务器的真实 IP 地址,提升安全性,还便于对后端服务器进行统一管理与调度。例如,在一个拥有多个微服务的大型企业级应用中,通过 Nginx 反向代理,可以根据不同的 URL 路径或域名,将用户请求精准分发到对应的微服务实例上,实现高效的资源分配与服务治理。
负载均衡
随着业务增长,单台服务器往往难以承受大量用户的并发访问。Nginx 的负载均衡功能能够将客户端请求均匀地分配到多个后端服务器上,以此提升系统整体性能与可用性。Nginx 支持多种负载均衡算法,常见的有:
轮询(Round Robin):按照顺序依次将请求分配到后端服务器,每个后端服务器轮流处理请求,适用于后端服务器性能相近的场景。
加权轮询(Weighted Round Robin):根据后端服务器的性能状况设置权重,性能越好的服务器权重越高,分配到的请求也就越多。比如,一台配置较高的服务器权重设为 3,另一台配置稍低的服务器权重设为 1,那么在分配请求时,前者接收请求的概率是后者的三倍,这种算法能更合理地利用后端服务器资源。
IP 哈希(IP Hash):根据客户端的 IP 地址计算哈希值,将相同 IP 地址的请求始终分配到同一台后端服务器。这种算法适用于需要保持会话一致性的场景,如电商网站中用户添加商品到购物车的操作,通过 IP 哈希能确保同一用户的购物车操作始终在同一台服务器上处理,避免数据混乱。
HTTP 缓存
Nginx 的 HTTP 缓存功能可以显著提升网站访问速度。它能够缓存静态资源(如图片、CSS、JavaScript 文件等)以及动态页面的输出结果。当客户端请求这些资源时,如果 Nginx 缓存中存在对应的内容,就直接将缓存内容返回给客户端,无需再次向后端服务器请求。这不仅极大减轻了后端服务器的负载,还加快了客户端响应速度,节省网络带宽。以新闻资讯类网站为例,大量的新闻文章页面和配图在一段时间内更新频率较低,通过 Nginx 缓存这些资源,用户再次访问相同页面时,能够迅速获取内容,提升用户体验。而且,Nginx 还支持灵活的缓存过期策略配置,可根据资源类型、URL 路径等设置不同的缓存有效期,进一步优化缓存管理。
应用场景
Web 服务器
Nginx 作为 Web 服务器,在处理 HTTP 请求和提供静态文件服务方面表现卓越。其对静态资源(如 HTML、CSS、图片等)的处理速度极快,相比一些传统 Web 服务器具有明显优势。许多小型网站和个人博客选择 Nginx 作为 Web 服务器,正是看中了它的轻量级和高性能特点。即使在面对高并发访问时,Nginx 也能凭借出色的性能保持网站稳定运行。例如,一些轻量级的企业官网,使用 Nginx 作为 Web 服务器,不仅能够高效展示企业信息,还能在有限的服务器资源下,轻松应对日常访问流量。
反向代理服务器
在大型企业级应用架构中,Nginx 常被用作反向代理服务器。企业内部通常拥有多个不同的业务系统和应用服务器,借助 Nginx 的反向代理功能,能够将外部用户请求准确分发到相应的后端服务器上。同时,Nginx 还可对请求进行过滤、身份验证等预处理操作,增强系统安全性与稳定性。以电商平台为例,用户对商品展示、订单处理、用户管理等不同功能模块的请求,都可以通过 Nginx 反向代理到对应的后端应用服务器进行处理。并且,Nginx 可以根据后端服务器的运行状态动态调整请求分发策略,如当某台后端服务器出现故障时,自动将请求转发到其他正常服务器,保障服务的连续性。
负载均衡器
当后端由多个服务器组成集群提供服务时,Nginx 作为负载均衡器发挥着至关重要的作用。它能够依据后端服务器的负载情况、性能指标等因素,动态调整请求分配策略,确保每台服务器合理分担负载。这对于高流量的网站和应用程序(如社交媒体平台、在线游戏等)尤为关键。在社交媒体平台中,大量用户同时发布动态、浏览内容,通过 Nginx 的负载均衡功能,可保证系统在高并发情况下依然能快速响应,避免因服务器过载导致服务中断,为用户提供流畅的使用体验。 此外,Nginx 还支持对后端服务器进行健康检查,实时监测服务器状态,只有健康的服务器才会被纳入请求分配范围,进一步提升系统可靠性。
API 网关
随着微服务架构的广泛应用,API 网关成为了系统架构中的重要组成部分。Nginx 凭借其强大的功能和灵活的配置,也常被用作 API 网关。它可以对客户端发送到不同微服务的 API 请求进行统一管理,包括请求路由、请求限流、权限验证、协议转换等功能。例如,在一个由多个微服务组成的电商系统中,Nginx 作为 API 网关,能够将来自移动端、Web 端的用户请求,根据请求的 API 路径和参数,准确转发到对应的微服务实例上。同时,通过配置限流策略,防止某个 API 接口被恶意频繁调用;通过权限验证,确保只有合法用户才能访问特定 API,保障系统的安全性和稳定性。
使用
安装
Ubuntu
在安装 Nginx 之前,先更新系统的软件包索引,确保获取到最新的软件包信息。打开终端,执行以下命令:
sudo apt update
使用apt包管理器安装 Nginx,执行命令:
sudo apt install nginx
安装过程中,系统会提示你确认安装依赖包等信息,输入Y并回车继续安装。安装完成后,Nginx 服务会自动启动。安装完成后,查看80端口与本地访问是否正常
如果本地访问正常,局域网其它机器无法访问则需要防火墙打开端口
sudo ufw allow 'Nginx HTTP'
,或直接关闭防火墙。
如果执行 netstat -nltp
没有80端口,可能未启动,执行nginx
命令启动服务。
CentOS
在线安装
安装 EPEL 仓库
CentOS 默认的软件源中可能没有 Nginx,需要先安装 Extra Packages for Enterprise Linux(EPEL)仓库,执行命令:
sudo yum install epel-release
安装 Nginx
安装好 EPEL 仓库后,使用yum包管理器安装 Nginx:
sudo yum install nginx
安装完成后检查是否正常,
nginx -t
可查看配置是否正常并查看配置文件路径:
源码安装
安装所需环境
一. gcc 安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
sudo yum install -y gcc-c++
二. PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
sudo yum install -y pcre pcre-devel
三. zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
sudo yum install -y zlib zlib-devel
四. OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
sudo yum install -y openssl openssl-devel
五. Nginx 安装
wget -c https://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
./configure --with-http_stub_status_module --with-http_ssl_module # 添加https模块,还可以指定安装目录 --prefix=/soft/nginx/
make
make install
cd /usr/local/nginx/sbin/ # 默认安装到此路径
./nginx # 启动nginx
Windows
下载 Nginx
前往 Nginx 官方网站(https://nginx.org/en/download.html),在页面中找到 Windows 版本的 Nginx 下载链接,下载适合你系统(32 位或 64 位)的稳定版压缩包。
解压与启动
将下载的压缩包解压到你希望安装 Nginx 的目录,例如C:\nginx。进入解压后的目录,找到nginx.exe文件,双击即可启动 Nginx。也可以通过命令行启动,打开命令提示符,进入 Nginx 安装目录,执行命令:
start nginx
验证安装
打开浏览器,输入http://localhost,若看到 Nginx 的欢迎页面,说明安装成功。如果无法访问,检查是否有其他程序占用了 80 端口。若要停止 Nginx,在命令提示符中执行:
nginx -s stop # 强制终止Nginx,不管当前是否有任务在执行
nginx -s quit # 优雅关闭Nginx,会在执行完当前的任务后再退出
若要重新加载配置文件,执行:
nginx -s reload # 也可以通过 -c 指定配置文件 -c conf/nginx.conf
安装完成!!!