全部版块 我的主页
论坛 数据科学与人工智能 IT基础
64 0
2025-12-05

一、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端口的请求量。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群