在高并发的互联网应用场景中一款高性能、轻量级的服务器工具是后端架构的核心基石而 Nginx 正是凭借着高并发支撑、低资源消耗、功能丰富的特性成为了开发者和运维人员的首选。无论是静态资源部署、虚拟主机配置还是反向代理、负载均衡Nginx 都能轻松应对更是解决前后端跨域、实现动静分离的最佳实践方案。今天这篇文章就从 Nginx 基础认知、安装配置、核心功能实战三个维度带大家快速掌握 Nginx 的核心用法。一、认识 Nginx高性能的轻量级服务器Nginx 是由俄罗斯程序员伊戈尔・西索夫开发的高性能 HTTP 服务器 / 反向代理服务器同时也支持 IMAP/POP3 邮件代理官方测试能支撑 5 万并发连接且对 CPU、内存的资源消耗极低运行稳定性拉满这也是它能碾压传统服务器工具的核心优势。和我们熟知的 Tomcat 相比Nginx 的定位十分明确仅支持静态项目发布而 Tomcat 主打 Web 动态项目部署二者搭配使用正是企业级开发中 “动静分离” 的核心思路。Nginx 的四大核心应用场景HTTP 静态服务器独立提供 HTTP 服务快速部署静态网页、图片、视频等资源是静态资源的最优承载工具虚拟主机在单台物理服务器上虚拟出多个网站节省服务器资源满足个人或企业多站点部署需求反向代理与负载均衡应对高并发场景将用户请求转发至后端服务器集群实现负载平均分配避免单台服务器宕机导致服务不可用解决跨域轻松搞定前后端分离项目中的跨域问题替代前端本地代理、后端 CORS 配置等方案更高效且易维护。而 Nginx 的最佳实践 —— 动静分离则是融合了静态服务和反向代理的核心能力将静态资源部署在 Nginx 上动态请求通过 Nginx 转发至后端 Tomcat 等动态服务器既减少了不必要的请求消耗又能实现动静服务解耦即便动态服务故障静态资源也能正常访问。二、Nginx 快速上手安装、启动与配置文件详解Nginx 的安装和使用非常轻量化无需复杂的编译步骤解压即可运行Windows 和 Linux 系统操作逻辑基本一致这里以 Windows 系统为例带大家快速完成基础部署。1. 下载与安装Nginx 官方下载地址http://nginx.org/en/download.html提供主线版Mainline和稳定版Stable生产环境建议选择稳定版。下载后解压至本地目录注意文件夹名称不要包含中文和空格解压后即为 Nginx 的根目录核心文件和目录结构清晰无需额外配置。2. 核心目录与文件解读解压后的 Nginx 根目录包含多个关键文件夹每个文件夹的作用各司其职掌握后能大幅提升配置效率conf所有配置文件的核心目录其中nginx.conf是 Nginx 的主配置文件日常所有功能配置均修改此文件html默认站点目录存放默认首页index.html和错误页面50x.html静态网站可直接将资源放入此目录logs日志目录包含访问日志access.log、错误日志error.log和进程 PID 文件nginx.pid便于问题排查temp临时目录存放 Nginx 运行时的临时文件nginx.exeWindows 下的可执行程序用于启动、停止 Nginx 服务。3. 常用操作命令在 Nginx 根目录下打开命令行执行以下命令完成服务管理简单易记启动start nginx关闭nginx -s stop重启配置修改后生效nginx -s reload配置检查避免配置错误导致服务故障nginx -t注意推荐在cmd中切换到nginx下载的目录里面使用指令如下图不推荐这种情况有些指令无法使用4. 启动验证双击nginx.exe推荐使用指令或执行启动命令后打开浏览器输入http://localhost或http://localhost:80若看到 “Welcome to nginx!” 的欢迎页面说明 Nginx 启动成功。5. 核心配置文件nginx.conf结构Nginx 的配置文件采用层级结构主要分为四个核心部分继承关系为main全局→http→server→location而upstream负载均衡配置不参与继承是独立模块。nginx# 全局设置与业务无关的基础配置如进程数、日志、PID main { worker_processes 1; # 工作进程数建议等于CPU线程数 error_log logs/error.log; # 全局错误日志 pid logs/nginx.pid; # PID文件路径 } # 工作模式设置连接处理能力 events { worker_connections 1024; # 单个worker进程最大并发连接数 } # HTTP服务核心配置可包含多个server配置请求处理、mime类型等 http { include mime.types; # 引入媒体类型配置 default_type application/octet-stream; # 缺省数据类型 sendfile on; # 开启高性能数据处理 keepalive_timeout 65; # 连接保持时间 # 负载均衡配置定义后端服务器集群 upstream 集群名称 { server 服务器IP:端口; } # 虚拟主机/站点配置一个server对应一个站点可配置多个 server { listen 80; # 监听端口 server_name localhost; # 主机名/域名/IP error_page 500 502 503 504 /50x.html; # 错误页面配置 # URL匹配配置一个server可包含多个location转发不同请求 location 请求路径 { root 资源根目录; # 静态资源目录 index 首页文件; # 默认首页 proxy_pass 转发地址; # 反向代理转发地址 } } }这是 Nginx 配置的基础框架所有核心功能的实现都是在这个框架上进行细节修改。三、Nginx 核心功能实战从静态部署到负载均衡掌握了基础的安装和配置结构后接下来就是 Nginx 最实用的核心功能实战从简单的静态网站部署到虚拟主机、反向代理再到高并发场景的负载均衡一步步实现企业级应用配置。实战 1静态网站快速部署这是 Nginx 最基础的用法适合部署纯静态的网页、博客、官网等项目步骤仅需 1 步将静态项目的所有文件包含index.html直接复制到 Nginx 的html目录下重启 Nginx 后浏览器输入http://localhost:监听端口即可直接访问项目。实战 2配置虚拟主机单服务器部署多站点通过虚拟主机可在单台 Nginx 服务器上部署多个静态站点通过不同端口区分核心是在http模块中配置多个server节点步骤如下创建站点目录在 Nginx 根目录下创建两个文件夹campus和travel分别放入两个静态项目的所有资源修改配置文件在nginx.conf的http模块中添加两个server节点分别监听 81 和 82 端口nginx# 校园网站点监听81端口 server { listen 81; server_name localhost; location / { root campus; # 指向校园网项目目录 index index.html; # 默认首页 } } # 旅游网站点监听82端口 server { listen 82; server_name localhost; location / { root travel; # 指向旅游网项目目录 index index.html; # 默认首页 } }验证访问重启 Nginx 后输入http://localhost:81访问校园网http://localhost:82访问旅游网实现单服务器多站点部署。实战 3反向代理实现动静分离反向代理是 Nginx 的核心能力之一核心作用是将用户请求转发至后端动态服务器如 Tomcat实现动静分离。以 Tomcat 部署动态旅游网为例配置步骤如下准备工作将动态旅游网项目部署到 Tomcat 的ROOT目录启动 Tomcat通过http://localhost:8080能正常访问修改 Nginx 配置在nginx.conf中配置upstream和server将 80 端口的请求转发至 Tomcat 的 8080 端口nginx# 定义后端Tomcat集群单台服务器也需配置 upstream tomcat-travel { server 127.0.0.1:8080; } # Nginx监听80端口转发请求至Tomcat server { listen 80; server_name localhost; location / { proxy_pass http://tomcat-travel; # 反向代理转发地址 index index.html; } }验证访问重启 Nginx 后浏览器输入http://localhostNginx 会自动将请求转发至 Tomcat实现动态服务的代理访问而静态资源仍由 Nginx 直接提供完成动静分离。实战 4负载均衡应对高并发场景当网站访问量达到一定规模单台 Tomcat 无法支撑并发Tomcat 默认并发 300-500此时需要搭建 Tomcat 服务器集群通过 Nginx 实现负载均衡将请求平均分配至多台 Tomcat提升服务并发能力和稳定性。负载均衡的三种实现方式DNS 负载均衡通过 DNS 服务器映射多个 IP随机分配请求简单但可控性低硬件负载均衡如 F5 设备性能强但价格昂贵适合大型企业软件负载均衡如 Nginx、LVS、HAProxy免费开源、配置灵活是互联网企业的首选。Nginx 负载均衡实战Tomcat 集群准备工作复制 3 台 Tomcat修改端口分别为 8080、8081、8082均部署旅游网项目并在首页添加标记区分服务器启动所有 Tomcat。配置步骤在 Nginx 的nginx.conf中修改upstream和server将请求转发至 3 台 Tomcatnginx# 定义Tomcat集群包含3台服务器 upstream tomcat-nginx { server 127.0.0.1:8080; server 127.0.0.1:8081; server 127.0.0.1:8082; } # Nginx监听80端口实现负载均衡 server { listen 80; server_name localhost; location / { proxy_pass http://tomcat-nginx; # 转发至Tomcat集群 index index.html; } }重启 Nginx 后输入http://localhost不断刷新会发现页面交替显示 3 台 Tomcat 的标记说明请求被平均分配负载均衡配置成功。实战 5Nginx 负载均衡策略优化负载均衡策略轮询随机一致性hash最小连接数。轮询多个服务器按照顺序去访问这样的话每个服务器都能获得相同的请求次数。随机根据随机算法获取目标服务器地址进行请求。一致性hash有相同hash码的请求发送到 相同服务器上。最小连接数将请求转发给连接数最少的目标服务器。在实际项目中开发中各个服务器性能各不相同则均衡策略也不同策略如下Nginx 默认采用轮询策略分配请求即按顺序依次转发至后端服务器而实际生产环境中后端服务器性能各异需要根据实际情况选择不同的负载均衡策略Nginx 支持多种核心策略可直接在upstream模块中配置权重策略weight为性能不同的服务器配置不同权重权重越高接收的请求越多适合服务器性能不均的场景nginxupstream tomcat-nginx { server 127.0.0.1:8080 weight1; # 低性能服务器权重1 server 127.0.0.1:8081 weight2; # 中性能服务器权重2 server 127.0.0.1:8082 weight3; # 高性能服务器权重3 }IP 哈希ip_hash根据客户端 IP 进行哈希计算将同一客户端的请求转发至同一台服务器实现会话保持但性能较低建议用 Token 替代nginxupstream tomcat-nginx { ip_hash; # 开启IP哈希 server 127.0.0.1:8080 weight1; server 127.0.0.1:8081 weight2; }最少连接数least_conn将请求转发至当前连接数最少的后端服务器适合请求处理耗时不均的场景nginxupstream tomcat-nginx { least_conn; # 开启最少连接数 server 127.0.0.1:8080; server 127.0.0.1:8081; }响应时间最少fair第三方统计后端服务器的平均请求处理时间将请求转发至响应最快的服务器需安装第三方模块。四、正向代理 vs 反向代理核心区别一次分清在使用 Nginx 的过程中很多人会混淆正向代理和反向代理其实二者的核心区别只有一个代理的对象不同记住这一点就能轻松区分正向代理代理客户端客户端主动配置代理服务器通过代理访问目标服务器目标服务器无法得知真实客户端的 IP隐藏了客户端典型场景如网络代理工具反向代理代理服务器端客户端直接访问代理服务器由代理服务器转发请求至后端真实服务器客户端无法得知真实服务器的 IP隐藏了服务器集群Nginx 的核心应用就是反向代理。简单总结代理哪端就隐藏哪端。五、总结Nginx 作为一款高性能的轻量级服务器工具凭借着高并发、低资源消耗、配置灵活的特性成为了后端架构中不可或缺的一环。从基础的静态资源部署到虚拟主机、反向代理再到高并发场景的负载均衡Nginx 几乎覆盖了 Web 服务的所有核心需求而 “动静分离” 的最佳实践更是让它与 Tomcat 等动态服务器形成完美搭配大幅提升服务性能和稳定性。本文从 Nginx 的基础认知、安装配置到核心功能实战讲解了最实用的企业级用法所有配置均为基础且核心的内容上手难度低只要掌握nginx.conf的层级结构和核心模块就能根据实际需求灵活配置。在实际生产环境中Nginx 还能结合 SSL 配置实现 HTTPS、配置缓存提升访问速度、做应用层防火墙抵御攻击等更多高级用法大家可以在基础之上继续探索。