news 2026/9/3 0:33:23

Nginx 代理服务器核心配置 + 反向代理 + 负载均衡全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nginx 代理服务器核心配置 + 反向代理 + 负载均衡全解析

Nginx 代理服务器核心配置 + 反向代理 + 负载均衡全解析

前言

在高并发 Web 开发场景中,Nginx 早已成为不可或缺的核心组件,作为高性能的 HTTP 服务器 / 反向代理服务器,它能支撑 5 万并发连接且资源消耗极低,同时还能完美解决静态资源部署、跨域、负载均衡等实际开发问题。本文将从 Nginx 基础概述出发,逐步讲解安装配置、核心模块、反向代理、负载均衡等核心知识点,结合实战案例让你快速上手 Nginx,玩转企业级 Web 服务部署。

一、Nginx 核心概述

1.1 什么是 Nginx

Nginx 是由俄罗斯程序员伊戈尔・西索夫开发的高性能 HTTP 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,核心优势是高并发、低资源消耗、运行稳定

注意:Nginx 仅支持发布静态项目,动态 Web 项目需搭配 Tomcat 等容器使用。

1.2 核心应用场景

Nginx 的核心能力覆盖开发与部署全流程,也是企业中最常用的功能点:

  1. HTTP 静态服务器:独立提供 HTTP 服务,高效部署静态资源(HTML、CSS、JS、图片等);
  2. 虚拟主机:一台物理服务器虚拟出多个网站,节省服务器资源,适用于个人 / 中小企业站点部署;
  3. 反向代理 + 负载均衡:解决单服务器高并发瓶颈,将请求分摊到多台后端服务器,避免单节点宕机;
  4. 解决跨域:轻松处理前后端分离项目中的跨域问题;
  5. 动静分离:将静态请求和动态请求分离,静态资源由 Nginx 直接返回,动态请求转发至后端服务,减少请求延时和服务消耗,且动态服务不可用时静态资源不受影响。

二、Nginx 安装与基础操作

2.1 下载与安装

Nginx 官方下载地址:http://nginx.org/en/download.html,提供主线版(Mainline)和稳定版(Stable),推荐生产环境使用稳定版。安装方式极其简单:解压即可使用注意解压路径不要包含中文和空格,避免运行报错。

2.2 核心目录结构

以 Nginx 1.20.1 为例,解压后核心目录及作用如下,掌握目录结构是后续配置的基础:

plaintext

nginx-1.20.1/ ├── conf/ # 所有配置文件目录,核心为nginx.conf ├── contrib/ # 开源爱好者共享的代码 ├── docs/ # 官方文档资料 ├── html/ # 默认站点目录,存放默认首页和错误页面 ├── logs/ # 日志目录,包含访问日志、错误日志、PID文件 ├── temp/ # 运行时临时文件目录 └── nginx.exe # Windows下可执行程序,用于启动/停止服务

conf 目录核心文件

  • nginx.conf:Nginx 主配置文件,日常所有配置修改均在此文件;
  • mime.types:配置 HTTP 请求的媒体类型;
  • fastcgi.conf/params:FastCGI 相关参数配置,用于对接动态服务。

html 目录核心文件

  • index.html:Nginx 默认首页,启动成功后访问localhost即可看到;
  • 50x.html:5xx 系列错误的优雅展示页面。

2.3 常用操作命令

需在 Nginx 根目录下打开命令行执行,Windows 环境核心命令如下,是日常运维的高频操作:

bash

运行

start nginx # 启动Nginx服务 nginx -s stop # 强制关闭Nginx服务 nginx -s reload # 重启Nginx(配置文件修改后需执行) nginx -t # 检查配置文件语法是否正确(必用,避免配置错误导致启动失败)

2.4 启动验证

双击nginx.exe或执行start nginx启动后,打开浏览器输入http://localhosthttp://localhost:80,若看到Welcome to nginx!页面,说明启动成功。

注意:Nginx 是多进程程序,启动后会在任务管理器中看到多个 nginx.exe 进程。

三、Nginx 核心配置文件解析

Nginx 的核心配置文件为conf/nginx.conf,配置结构分为四个核心部分,且存在继承关系:main(全局) > http > server > locationupstream(负载均衡)不参与继承。整体结构框架:

nginx

# 全局配置:与具体业务无关的基础参数 main { worker_processes 1; error_log logs/error.log; pid logs/nginx.pid; } # 工作模式配置:处理连接的核心参数 events { worker_connections 1024; } # HTTP服务核心配置:可包含多个server http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; # 负载均衡配置:定义后端服务器集群 upstream 集群名称 { server 后端服务器地址1; server 后端服务器地址2; } # 虚拟主机/站点配置:一个server对应一个站点,可配置多个 server { listen 80; # 监听端口 server_name localhost; # 主机名/域名/IP error_page 500 502 503 504 /50x.html; # 错误页面配置 # URL匹配配置:一个server可包含多个location location URL表达式 { # 请求处理/转发规则 } } }

3.1 各模块核心配置说明

(1)main 全局模块

配置 Nginx 运行的基础参数,与具体 HTTP / 代理服务无关:

  • worker_processes 1:工作进程数,建议值为 CPU 的线程数,最大化利用 CPU 资源;
  • error_log logs/error.log:全局错误日志路径,日志级别包含 debug、info、notice、warn、error、crit;
  • pid logs/nginx.pid:Nginx 进程 PID 文件路径,记录进程 ID。
(2)events 工作模式模块

配置 Nginx 的连接处理能力:

  • worker_connections 1024:单个工作进程最大并发连接数,建议配置 1 万 - 5 万,结合服务器硬件调整。
(3)http 核心模块

配置 HTTP 服务的通用参数,所有 server 均继承此模块配置:

  • include mime.types:引入媒体类型配置,让 Nginx 识别不同文件类型;
  • sendfile on:开启高性能数据传输模式,提升静态资源访问速度;
  • keepalive_timeout 65:HTTP 连接保持时间,单位秒,减少频繁建立连接的消耗。
(4)server 虚拟主机模块【重点】

一个 http 模块中可配置多个 server,一个 server 对应一个独立站点 / 虚拟主机,核心配置:

  • listen 端口:站点监听的端口,默认 80,多个虚拟主机需配置不同端口;
  • server_name:站点的主机名,可配置localhost、域名(如www.xxx.com)、IP 地址;
  • error_page 错误码 /页面路径:配置错误页面,如 502 错误跳转到 50x.html。
(5)location URL 匹配模块【重点】

匹配客户端的请求 URL,根据规则处理 / 转发请求,一个 server 可包含多个 location,核心语法:

nginx

location / { root html; # 静态资源根目录 index index.html index.htm; # 默认首页,按顺序匹配 }
  • /:匹配根目录下的所有请求;
  • root 目录:指定静态资源的根目录;
  • index:配置站点的默认首页,多个页面按顺序匹配。

3.2 静态网站部署实战

将静态项目(HTML、CSS、JS、图片等)的所有文件直接复制到 Nginx 的 html 目录,启动 / 重启 Nginx 后,访问http://localhost:端口即可直接访问,是最简单的静态站点部署方式。

3.3 虚拟主机配置实战

实现一台 Nginx 服务器部署多个静态站点,核心是配置多个 server,监听不同端口,指定不同的资源根目录。

需求

在 Nginx 中部署两个站点:校园网(campus)、旅游网(travel),分别通过localhost:81localhost:82访问。

配置步骤
  1. 在 Nginx 根目录下创建campustravel文件夹,分别放入对应站点的静态文件;
  2. 修改nginx.conf,添加两个 server 配置:

nginx

http { # 原有通用配置不变 server { listen 81; server_name localhost; location / { root campus; # 指向校园网资源目录 index index.html; } } server { listen 82; server_name localhost; location / { root travel; # 指向旅游网资源目录 index index.html; } } }
  1. 执行nginx -t检查配置语法,无错误后执行nginx -s reload重启 Nginx;
  2. 访问测试:http://localhost:81访问校园网,http://localhost:82访问旅游网。

四、Nginx 反向代理详解

4.1 代理的分类与核心区别

代理分为正向代理反向代理,核心区别是代理的对象不同,且代理哪端就隐藏哪端的真实地址,这是理解代理的关键:

表格

代理类型代理对象核心作用隐藏对象典型场景
正向代理客户端替客户端向服务器发起请求真实客户端地址网络代理工具、科学上网
反向代理服务器替服务器接收客户端请求,转发至后端真实服务器真实服务器地址负载均衡、站点部署、跨域解决

4.2 反向代理核心概念

反向代理是 Nginx 的核心功能,客户端向 Nginx 代理服务器发起请求,Nginx 将请求转发给后端的真实服务器(如 Tomcat),服务器处理后将结果返回给 Nginx,再由 Nginx 返回给客户端。客户端仅知道 Nginx 的地址,并不知道后端真实服务器的存在,既提升了服务器的安全性,又能实现请求的分发。

4.3 反向代理核心适用场景

  1. 负载均衡:将请求分摊到多台后端服务器,解决高并发瓶颈;
  2. 提升安全性:隐藏后端服务器 IP,作为应用层防火墙抵御 DoS/DDoS 等攻击;
  3. 性能优化:提供缓存服务、SSL 加密加速、数据压缩,提升客户端访问速度;
  4. 外网发布:为局域网内的服务器集群提供 NAT 穿透,实现外网访问;
  5. 统一管控:实现统一的访问权限控制、上传下载速度控制。

4.4 反向代理实战(对接 Tomcat)

需求

将部署在 Tomcat(8080 端口)的旅游网动态项目,通过 Nginx(80 端口)反向代理访问,即访问http://localhost等价于访问http://localhost:8080

准备工作
  1. 将旅游网项目部署到 Tomcat 的 ROOT 目录;
  2. 启动 Tomcat,验证http://localhost:8080可正常访问项目。
Nginx 配置步骤
  1. 修改nginx.conf,添加upstream并修改 server 的 location 配置:

nginx

http { # 定义后端Tomcat集群,此处仅一台服务器 upstream tomcat-travel { server 127.0.0.1:8080; } server { listen 80; server_name localhost; location / { # 反向代理至后端集群 proxy_pass http://tomcat-travel; index index.html; } } }
  1. 执行nginx -t检查配置,无错误后nginx -s reload重启 Nginx;
  2. 访问测试:输入http://localhost,即可正常访问 Tomcat 上的旅游网项目。

五、Nginx 负载均衡实战

5.1 负载均衡核心概念

负载均衡(Load Balance)是将高并发的请求均衡分摊到多台后端操作单元(如 Tomcat),协同完成工作任务,解决单服务器的并发瓶颈和单点故障问题。

  • Tomcat 默认并发数仅 300-500,超过后会出现请求无响应、内存溢出等问题;
  • Nginx 最大并发数可达 50000,理论上可按 1:100 的比例搭配 Tomcat,完美解决高并发问题。

5.2 负载均衡的实现方式

目前主流的负载均衡实现方式有三种,企业中以软件负载均衡为主:

  1. 基于 DNS 的负载均衡:将一个域名映射到多个 IP,DNS 随机分配 IP 实现请求分发,优点是简单,缺点是无法感知服务器状态;
  2. 基于硬件的负载均衡:如 F5 设备,性能强、功能全,支持多种算法,缺点是价格昂贵,适用于大型企业;
  3. 基于软件的负载均衡:如 Nginx、LVS、HAProxy,免费开源、配置简单、灵活性高,支持二次开发,是互联网企业的首选。

5.3 负载均衡实战(多 Tomcat 集群)

需求

将旅游网项目部署到 3 台 Tomcat(8080、8081、8082),通过 Nginx 负载均衡将请求分摊到 3 台服务器,实现高并发支撑。

准备工作
  1. 复制 3 个 Tomcat 实例,分别修改端口为 8080、8081、8082,避免端口冲突;
  2. 均部署旅游网项目,为区分服务器,在项目首页标题添加对应端口标记;
  3. 分别启动 3 台 Tomcat,验证各端口均可正常访问。
Nginx 配置步骤
  1. 修改nginx.conf,配置upstream包含 3 台 Tomcat,location 指向该集群:

nginx

http { # 定义Tomcat集群,包含3台后端服务器 upstream tomcat-nginx { server 127.0.0.1:8080; server 127.0.0.1:8081; server 127.0.0.1:8082; } server { listen 80; server_name localhost; location / { proxy_pass http://tomcat-nginx; # 反向代理至集群 index index.html; } } }
  1. 检查配置并重启 Nginx;
  2. 访问测试:输入http://localhost,多次刷新页面,会交替显示 3 台 Tomcat 的页面,实现请求的均匀分摊。

5.4 Nginx 负载均衡核心策略【重点】

Nginx 提供多种负载均衡策略,可根据后端服务器的性能、业务需求灵活选择,默认策略为轮询

(1)轮询(默认)
  • 规则:请求按顺序依次转发给后端服务器,各服务器请求次数均匀;
  • 适用场景:所有后端服务器性能一致
  • 配置:无需额外配置,upstream 中直接列出 server 即可。
(2)权重(weight)
  • 规则:为后端服务器设置权重,权重越高,接收的请求数越多;
  • 适用场景:后端服务器性能不一致(如高配服务器权重高,低配权重低);
  • 配置示例:

nginx

upstream tomcat-nginx { server 127.0.0.1:8080 weight=1; # 权重1,接收1份请求 server 127.0.0.1:8081 weight=2; # 权重2,接收2份请求 server 127.0.0.1:8082 weight=3; # 权重3,接收3份请求 }

说明:总权重为 6,8080 占 1/6,8081 占 2/6,8082 占 3/6。

(3)IP 哈希(ip_hash)
  • 规则:根据客户端 IP 进行哈希计算,同一个客户端的所有请求始终转发到同一台后端服务器
  • 核心作用:会话保持,解决客户端会话数据不一致的问题;
  • 配置示例:

nginx

upstream tomcat-nginx { ip_hash; # 开启IP哈希策略 server 127.0.0.1:8080 weight=1; server 127.0.0.1:8081 weight=2; }

注意:IP 哈希性能较低,企业中更推荐使用Token实现会话跟踪。

(4)最少连接数(least_conn)
  • 规则:将请求转发给当前活跃连接数最少的后端服务器;
  • 适用场景:后端服务器处理请求的耗时不一致,避免某台服务器因耗时久导致连接堆积;
  • 配置示例:

nginx

upstream tomcat-nginx { least_conn; # 开启最少连接数策略 server 127.0.0.1:8080 weight=1; server 127.0.0.1:8081 weight=2; }
(5)响应时间最少(fair,第三方)
  • 规则:统计后端服务器的平均请求处理时间,将请求转发给响应时间最短的服务器;
  • 特点:属于第三方策略,需额外安装模块,更贴合实际业务的性能需求;
  • 配置示例:

nginx

upstream tomcat-nginx { fair; # 开启响应时间最少策略 server 127.0.0.1:8080 weight=1; server 127.0.0.1:8081 weight=2; }

六、总结

Nginx 作为高性能的轻量级服务器,以高并发、低消耗、配置灵活的优势成为企业级 Web 开发的标配,本文从基础到实战,讲解了 Nginx 的核心知识点:

  1. 基础层面:掌握安装、目录结构、常用命令,是后续配置的前提;
  2. 配置层面:理解main-http-server-location-upstream的核心结构,掌握静态站点和虚拟主机部署;
  3. 核心功能:区分正向代理和反向代理,掌握反向代理的配置和实战,实现与动态服务的对接;
  4. 高级应用:理解负载均衡的核心意义,掌握多种负载均衡策略,根据业务场景灵活选择,解决高并发瓶颈。

Nginx 的功能远不止于此,后续还可深入学习 Nginx 的缓存配置、SSL 证书配置(HTTPS)、跨域配置、限流配置等高级功能,熟练掌握 Nginx 将大幅提升你的服务部署和运维能力,成为后端开发 / 运维的必备技能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 20:45:17

解锁精准定位:location-to-phone-number企业级应用全指南

解锁精准定位:location-to-phone-number企业级应用全指南 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_m…

作者头像 李华
网站建设 2026/8/20 17:20:27

毕业论文神器!降AIGC平台 千笔AI VS speedai 本科生专属推荐

在AI技术迅速发展的今天,越来越多的本科生开始借助AI工具辅助论文写作,以提升效率、优化内容。然而,随着各大查重系统对AI生成内容的识别能力不断提升,论文中的“AI痕迹”和“重复率”问题逐渐成为学术道路上的隐形障碍。一旦AI率…

作者头像 李华
网站建设 2026/9/1 9:33:59

乙巳马年春联生成终端镜像部署:阿里云ACK集群规模化分发方案

乙巳马年春联生成终端镜像部署:阿里云ACK集群规模化分发方案 1. 引言:从创意到规模化部署的挑战 想象一下,你开发了一款极具视觉冲击力的AI应用——一个能根据用户输入的简单愿望词,瞬间生成充满皇家气派和书法美学的马年春联。…

作者头像 李华
网站建设 2026/8/26 8:02:15

SillyTavern:重新定义AI对话体验的桌面端解决方案

SillyTavern:重新定义AI对话体验的桌面端解决方案 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 在数字化交流日益频繁的今天,如何构建一个既专业又富有沉浸感的AI…

作者头像 李华