cxl
Published on 2025-03-15 / 1,636 Visits
86
0

Nginx安装

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

  1. 下载 Nginx

前往 Nginx 官方网站(https://nginx.org/en/download.html),在页面中找到 Windows 版本的 Nginx 下载链接,下载适合你系统(32 位或 64 位)的稳定版压缩包。​

  1. 解压与启动

将下载的压缩包解压到你希望安装 Nginx 的目录,例如C:\nginx。进入解压后的目录,找到nginx.exe文件,双击即可启动 Nginx。也可以通过命令行启动,打开命令提示符,进入 Nginx 安装目录,执行命令:​

	start nginx​
  1. 验证安装

打开浏览器,输入http://localhost,若看到 Nginx 的欢迎页面,说明安装成功。如果无法访问,检查是否有其他程序占用了 80 端口。若要停止 Nginx,在命令提示符中执行:​

	nginx -s stop​ # 强制终止Nginx,不管当前是否有任务在执行
	nginx -s quit # 优雅关闭Nginx,会在执行完当前的任务后再退出

若要重新加载配置文件,执行:​

	nginx -s reload​ # 也可以通过 -c 指定配置文件  -c conf/nginx.conf

安装完成!!!


Comment