一、Nginx 简介
Nginx 是一款轻量级的 Web 服务器,同时具备反向代理和电子邮件(IMAP/POP3)代理功能。其以低内存占用和高并发处理能力著称,在同类服务器中性能表现优异。在中国大陆,许多大型互联网企业如百度、京东、新浪、网易、腾讯、淘宝等均采用 Nginx 作为核心服务组件。
Nginx 最初由俄罗斯开发者伊戈尔·赛索耶夫为 Rambler.ru(俄文:Рамблер)网站开发,该站点在俄罗斯访问量排名第二。首个公开版本 0.1.0 发布于 2004 年 10 月 4 日。
官方网站:
https://nginx.org/
二、Nginx 的目录结构
完成安装后,通常可进入默认安装路径(例如 /usr/local/nginx)查看其内部结构,了解各主要目录与文件的作用:
| 目录/文件 | 说明 | 备注 |
|---|---|---|
| conf | 存放所有配置文件 | 核心配置文件为 conf/nginx.conf,大部分操作围绕此文件展开 |
| html | 用于存放静态资源(如 HTML、CSS、JS 文件等) | 部署的静态页面及资源一般放置在此目录下 |
| logs | 日志存储目录,包括访问日志和错误日志 | 便于排查问题和监控运行状态 |
| sbin/nginx | 主程序二进制文件,用于控制 Nginx 服务启停 | 执行启动、停止、重载等命令的核心入口 |
三、Nginx 下载与安装流程
3.1 下载 Nginx 安装包
访问 Nginx 官方下载页面(http://nginx.org/en/download.html),可以获取当前发布的稳定版本及相关下载链接。
3.2 安装步骤
Step 1:安装必要的依赖库
由于 Nginx 使用 C 语言编写,需提前配置编译环境,并安装正则表达式库等第三方依赖。
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
Step 2:获取 Nginx 源码包
通过 wget 命令从官网下载指定版本的压缩包。
yum install wget
wget https://nginx.org/download/nginx-1.16.1.tar.gz
wget 是一个用于从 URL 地址下载文件的工具,具有良好的网络适应性,即使在网络不稳定或中断的情况下也能持续尝试直至完整下载。
Step 3:解压源码包
将下载的压缩文件进行解压,准备后续编译工作。
tar -zxvf nginx-1.16.1.tar.gz
Step 4:配置编译参数
运行 configure 脚本设置编译选项,其中常用参数 --prefix 用于指定最终安装路径。
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx
Step 5:编译并安装
执行 make 编译源码,随后运行 make install 将生成的文件安装到目标目录。
make & make install
四、Nginx 常用操作命令
Nginx 的主程序位于 sbin 目录下,尽管只有一个可执行文件,但配合不同参数即可实现多种管理功能。以下命令建议在 /usr/local/nginx/sbin/ 路径下执行。
(1) 查看版本信息
./nginx -v
(2) 验证配置文件语法正确性
修改完 conf/nginx.conf 后,应在重启前检查配置是否合法,避免因错误导致服务无法启动。
./nginx -t
(3) 启动 Nginx 服务
./nginx
服务启动后,可通过 ps -ef 查看进程是否存在。注意:Nginx 默认会启动两个进程。
启动成功后,可通过浏览器访问服务器的 80 端口进行测试,例如:
http://192.168.200.200
注意事项:
若无法访问,请确认防火墙设置:
- A. 关闭防火墙
? systemctl stop firewalld - B. 或开放 80 端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
(4) 停止服务
./nginx -s stop
停止后可通过进程命令验证服务是否已退出:
ps -ef|grep nginx
(5) 重新加载配置
当修改了配置文件后,无需重启整个服务,只需执行重载命令使新配置生效。
./nginx -s reload
五、Nginx 配置文件结构解析
Nginx 的核心配置文件位于 conf/nginx.conf,整体结构分为三个主要部分:全局块、events 块和 http 块。它们各自承担不同的职责:
| 区域 | 职责 |
|---|---|
| 全局块 | 定义与 Nginx 运行环境相关的全局参数 |
| events 块 | 配置连接处理模型,如最大连接数、事件驱动机制等 |
| http 块 | 涵盖代理、缓存、日志记录、虚拟主机等 Web 功能配置 |
具体结构示意图如下:
其中,http 块是实际应用中最常修改的部分,它可以包含多个 server 块,每个 server 又可进一步划分为多个 location 块,实现精细化路由控制。
六、使用 Nginx 部署静态资源
Nginx 可作为静态 Web 服务器来托管各类前端资源。所谓静态资源,指的是在服务器上真实存在的文件,能够被直接返回给客户端的内容,例如 HTML 页面、CSS 样式表、JavaScript 脚本、图片、视频等。
这些资源通常放置在 html 目录中,用户通过 HTTP 请求即可访问对应内容,Nginx 会根据请求路径查找并响应相应的静态文件。
相较于Tomcat,Nginx在处理静态资源方面表现出更高的效率。因此,在实际生产环境中,通常会将静态资源部署至Nginx以提升访问性能。
将静态文件部署到Nginx操作简便,只需将相关资源复制到Nginx安装路径下的html目录中即可完成发布。
server {
listen 80; #监听端口
server_name localhost; #服务器名称
location / { #匹配客户端请求url
root html; #指定静态资源根目录
index index.html; #指定默认首页
}
}
七、Nginx反向代理
7.1 概念介绍
1). 正向代理
正向代理是一种位于客户端与目标服务器之间的中间服务。当客户端希望从原始服务器获取资源时,需先向代理服务器发送请求,并明确指定目标服务器地址。代理服务器接收请求后,代表客户端访问原始服务器,再将响应结果返回给客户端。
这种模式常用于局域网内部用户通过防火墙访问外部Internet资源的场景。
正向代理通常需要在客户端进行网络设置,配置指定的代理服务器地址,所有请求都经由该代理转发,最终到达目标服务器。
2). 反向代理
反向代理服务器部署在用户和后端真实服务器之间。对用户而言,反向代理服务器即为目标服务器本身——用户直接访问该代理地址即可获取所需内容,而无需知晓背后真实服务器的存在。
反向代理会自动将用户的请求转发至后端合适的服务器,并将响应结果返回给用户。整个过程对用户完全透明,用户端无需任何特殊配置。
7.2 Nginx实现反向代理
在Nginx中,可通过修改主配置文件nginx.conf来实现反向代理功能:
server {
listen 82;
server_name localhost;
location / {
proxy_pass http://192.168.200.201:8080; #反向代理配置,将请求转发到指定服务
}
}
上述配置表示:当访问Nginx服务的82端口时,系统会根据反向代理规则,将请求转发至http://192.168.200.201:8080对应的应用服务上。
八、Nginx负载均衡
8.1 负载均衡概念说明
早期网站流量较小、业务逻辑简单,单台服务器足以支撑运行。但随着业务规模扩大,访问量上升,单一服务器不仅面临性能瓶颈,还存在单点故障风险。
为此,引入多台服务器构建应用集群,以实现横向扩展性能并提高系统可用性。
- 应用集群:将同一应用部署在多台服务器上,形成服务集群,接收来自负载均衡器分发的请求,完成业务处理并返回数据。
- 负载均衡器:负责接收客户端请求,并依据特定算法将其分发至集群中的某一台服务器进行处理。
本方案中,使用Nginx作为负载均衡器。其负载均衡机制建立在反向代理基础上,区别在于代理的目标不再是单一服务器,而是多个后端节点。
8.2 Nginx负载均衡测试配置
要在Nginx中启用负载均衡,需编辑其配置文件nginx.conf,添加如下内容:
# upstream指令用于定义一组后端服务器
upstream targetserver{
server 192.168.200.201:8080;
server 192.168.200.201:8081;
}
server {
listen 8080;
server_name localhost;
location / {
proxy_pass http://targetserver;
}
}
8.3 Nginx负载均衡策略
Nginx除了支持默认的轮询方式外,还提供多种负载均衡算法,具体如下表所示:
| 名称 | 说明 | 特点 |
|---|---|---|
| 轮询 | 默认分配方式 | 按顺序依次分发请求至各服务器 |
| weight | 权重分配方式 | 根据设定的权重值分配请求,权重越高,接收到请求的概率越大 |
| ip_hash | 基于客户端IP的哈希分配 | 根据客户端IP计算hash值,确保同一IP的请求始终转发到同一台服务器 |
| least_conn | 最少连接优先 | 优先将请求分发给当前连接数最少的服务器 |
| url_hash | 基于URL的哈希分配 | 根据请求URL生成hash值,相同URL的请求会被转发到同一服务器 |
| fair | 基于响应时间的动态分配 | 优先将请求交给响应速度更快的服务器处理 |
权重配置示例如下:
# upstream指令定义服务器组及其权重
upstream targetserver{
server 192.168.200.201:8080 weight=10;
server 192.168.200.201:8081 weight=5;
}
其中,weight数值为相对比例。以上配置意味着,在大量请求场景下,8080端口的服务将接收到约两倍于8081端口的请求量。


雷达卡


京公网安备 11010802022788号







