跳到主要内容Nginx 入门详解:从基础配置到高性能实战 | 极客日志编程语言大前端java
Nginx 入门详解:从基础配置到高性能实战
Nginx 核心概念、安装部署及四大应用场景(静态服务、虚拟主机、反向代理、负载均衡)。涵盖配置文件结构解析、常用命令操作及动静分离最佳实践,帮助开发者快速掌握高性能服务器配置与跨域解决方案。
灵魂伴侣27 浏览 一、Nginx 是什么?为何成为主流?
Nginx 是一款由俄罗斯程序员开发的高性能 HTTP 服务器、反向代理服务器,同时也支持 IMAP/POP3 邮件代理,官方测试能支撑5 万并发连接,且运行时对 CPU、内存的消耗极低,稳定性拉满,这也是它能取代传统服务器工具,成为互联网企业标配的核心原因。
很多人会把 Nginx 和 Tomcat 做对比,这里要明确一个核心区别:Nginx 仅能发布静态项目,适合处理 HTML、CSS、JS、图片等静态资源;而 Tomcat 擅长处理 Java Web 这类动态项目。在实际开发中,二者往往搭配使用,这也是后续会讲到的'动静分离'最佳实践。
简单来说,Nginx 就像服务器的'全能管家',既能自己打理静态资源的访问,又能把动态请求转发给专业的后端服务器,还能合理分配请求压力,让整个服务架构更高效、更稳定。
二、Nginx 的四大核心应用场景
Nginx 的功能强大且实用,核心应用场景主要有四个,覆盖了日常开发和部署的绝大多数需求,新手先掌握这四大场景,就能应对 80% 的使用场景。
1. 静态 HTTP 服务器
这是 Nginx 最基础的功能,它可以独立作为静态资源服务器,直接部署 HTML、CSS、JS、图片、视频等静态文件,访问速度极快。相比其他服务器,Nginx 处理静态资源的效率更高,配置也更简单,是静态网站部署的首选。
2. 虚拟主机
简单理解,虚拟主机就是在一台物理服务器上,虚拟出多个独立的网站,每个网站有自己的访问端口或域名,互不干扰。比如个人开发者只有一台服务器,却想部署多个个人网站,用 Nginx 配置虚拟主机就能轻松实现,极大节省了服务器资源。
3. 反向代理 + 负载均衡
当网站访问量增大,单台后端服务器无法承载并发请求时,就需要多台服务器组成集群,这时候 Nginx 的反向代理和负载均衡就派上了大用场。
- 反向代理:客户端只需要访问 Nginx 的地址,由 Nginx 将请求转发给后端的业务服务器,客户端完全不知道后端的服务器集群存在,既保护了后端服务器的安全,又统一了访问入口。
- 负载均衡:Nginx 会把客户端的请求平均分摊到后端的多台服务器上,避免某台服务器负载过高宕机,而另一台服务器闲置的情况,提升了整个服务的并发能力和稳定性。
4. 解决跨域问题
前后端分离开发是现在的主流模式,而浏览器的同源策略会导致跨域请求报错,这是前端开发者的常见痛点。Nginx 可以作为中间层,接收前端的请求,再转发给后端接口,由于服务器之间的请求不受同源策略限制,轻松解决跨域问题,无需后端做复杂的跨域配置。
最佳实践:动静分离
基于 Nginx 处理静态资源的优势和反向代理功能,衍生出了'动静分离'的最佳实践,这也是企业开发中最常用的架构设计。
- 核心逻辑:将静态资源(HTML、CSS、图片等)直接部署在 Nginx 上,动态请求(接口调用、数据查询等)由 Nginx 转发给 Tomcat、Spring Boot 等后端服务器处理。
- 核心优势:减少后端服务器的不必要请求消耗,提升请求响应速度;即使后端动态服务出现故障,静态资源的访问也不受影响,保证网站基础展示正常。
三、Nginx 快速上手:安装、启动与核心命令
Nginx 的安装和启动非常简单,Windows 和 Linux 系统操作类似,这里以 Windows 系统为例,教你快速完成 Nginx 的部署和基础操作,新手也能一步到位。
1. 下载与安装
Nginx 的官方下载地址:http://nginx.org/en/download.html,建议下载Stable version(稳定版),避免开发版的 bug 问题。
下载后是一个压缩包,直接解压即可使用,注意:解压路径中不要包含中文和空格,否则会导致 Nginx 启动失败。解压后会得到一个文件夹,里面包含 Nginx 的所有配置文件、可执行程序和默认站点目录。

2. Nginx 核心目录详解
解压后的文件夹结构清晰,核心目录和文件一定要记牢,后续的配置和部署都围绕这些目录展开:
| 目录 / 文件 | 核心作用 |
|---|
| conf | 存放 Nginx 所有配置文件,核心是 nginx.conf |
| html | Nginx 默认的静态站点目录,存放默认首页和错误页面 |
| logs | 日志目录,包含访问日志(access.log)和错误日志(error.log) |
| temp | 临时目录,存放 Nginx 运行时的临时文件 |
| nginx.exe | Windows 下的可执行程序,用于启动、停止 Nginx |
其中conf/nginx.conf是 Nginx 的主配置文件,日常的所有配置修改(如虚拟主机、反向代理)都在这个文件中进行。
3. 启动与验证
- 启动方式:直接双击解压目录中的
nginx.exe即可,Nginx 是多进程程序,启动后会在后台运行,不会有窗口弹出。
验证启动成功:打开浏览器,输入http://localhost或http://localhost:80,如果看到'Welcome to nginx!'的页面,说明启动成功。
4. Nginx 核心命令
双击启动后,若需要停止、重启或检查配置,需要在Nginx 根目录下打开命令行,执行以下核心命令,这是日常使用的高频操作,建议熟记:
- 启动 Nginx:
start nginx
- 强制关闭 Nginx:
nginx -s stop
- 平滑重启 Nginx(修改配置后生效):
nginx -s reload
- 检查配置文件语法是否正确:
nginx -t
重要提示:修改任何 Nginx 配置后,都需要执行nginx -s reload命令,让配置生效,无需重新启动 Nginx。
四、Nginx 核心配置:看懂 nginx.conf 就够了
Nginx 的所有功能都通过配置文件实现,而核心配置文件nginx.conf的结构非常清晰,主要分为四个部分,且存在继承关系:main(全局设置)→http(服务器总配置)→server(虚拟主机/站点配置)→location(URL 匹配配置),还有一个独立的upstream(负载均衡配置),不参与继承。
main{
# (全局设置)
http{
# 服务器
upstream{} # (负载均衡服务器设置:主要用于负载均衡和设置一系列的后端服务器)
server{ # (主机设置:主要用于指定主机和端口)
location{}# (URL 匹配特点位置的设置)
}
}
}
简单理解配置文件的层级:一个 http 中可以有多个 server(多个站点 / 虚拟主机),一个 server 中可以有多个 location(多个 URL 匹配规则),以下是核心配置的通俗解读,新手重点掌握server和location即可。
server 继承 main, location 继承 server, upstream 即不会继承其他设置也不会被继承
一个 http 中可以放置多个 server 服务,每一个 server 都是一个单独的虚拟主机。
1. main(全局配置)
和具体业务无关的基础配置,控制 Nginx 的运行规则,比如工作进程数、日志路径等:
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
2. events(工作模式配置)
控制 Nginx 的网络连接处理,核心是设置并发连接数:
events {
worker_connections 1024;
}
3. http(服务器总配置)
所有和 HTTP 服务相关的公共配置,会被所有的 server 继承,比如请求类型、连接保持时间等:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
}
4. server(重点:站点 / 虚拟主机配置)
单个站点或虚拟主机的独立配置,核心是设置监听端口和主机名,一个 http 中可以配置多个 server,实现多站点部署:
server {
listen 80;
server_name localhost;
error_page 500 502 503 504 /50x.html;
}
5. location(重点:URL 匹配配置)
server 内部的 URL 匹配规则,当 Nginx 接收到请求时,会根据请求的 URL 匹配对应的 location,然后执行相应的操作(如访问静态资源、转发请求),核心语法:
location 匹配规则 {
执行操作;
}
location / {
root html;
index index.html index.htm;
}
6. upstream(负载均衡配置)
专门用于配置后端服务器集群,为负载均衡和反向代理提供后端服务器地址,核心语法:
upstream 自定义集群名 {
server 后端服务器 1 地址:端口;
server 后端服务器 2 地址:端口;
}
upstream tomcat-cluster {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
五、Nginx 实战:四大核心场景配置示例
看懂配置文件后,结合实际应用场景做配置,才能真正掌握 Nginx,以下是四大核心场景的极简配置示例,直接复制修改即可使用,新手也能快速上手。
实战 1:部署静态网站
将静态网站的所有文件(HTML、CSS、JS 等)复制到 Nginx 的html目录下,无需修改默认配置,启动 Nginx 后,访问http://localhost即可直接打开网站。
如果需要部署多个静态网站,可在html下创建子文件夹(如html/blog、html/shop),将对应网站文件放入,访问http://localhost/blog即可。
实战 2:配置虚拟主机(多站点部署)
需求:在一台服务器上,通过 81、82 端口分别部署两个静态网站(校园网、旅游网)。
- 在 Nginx 根目录下创建
campus和travel文件夹,分别放入两个网站的静态文件;
- 执行
nginx -t检查配置,无错误后执行nginx -s reload生效;
访问测试:http://localhost:81(校园网)、http://localhost:82(旅游网)。
修改nginx.conf,添加两个 server 配置:
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;
}
}
}
实战 3:配置反向代理(解决跨域 / 转发动态请求)
需求:将 Nginx 的 80 端口请求,转发给本地 8080 端口的 Tomcat 动态项目(旅游网),同时解决前端跨域问题。修改nginx.conf的 server 配置,添加proxy_pass(反向代理目标地址):
http {
upstream tomcat-travel {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcat-travel;
index index.html;
}
}
}
配置生效后,访问http://localhost,Nginx 会自动将请求转发给http://localhost:8080的 Tomcat 项目,前端直接请求 Nginx 地址即可解决跨域。
实战 4:配置负载均衡(分担后端服务器压力)
需求:后端有 3 台 Tomcat 服务器(8080、8081、8082),通过 Nginx 实现请求的平均分配,提升并发能力。修改nginx.conf,配置 upstream 集群和反向代理:
http {
upstream tomcat-cluster {
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-cluster;
index index.html;
}
}
}
配置生效后,访问http://localhost,Nginx 会默认以轮询的方式,将请求依次分配给 8080、8081、8082 的 Tomcat 服务器,实现负载均衡。
六、Nginx 负载均衡的常用策略
默认的轮询策略适合后端服务器性能一致的情况,而实际开发中,后端服务器的配置(CPU、内存)往往不同,这时候就需要根据实际情况选择负载均衡策略,Nginx 支持多种策略,核心常用的有以下 4 种:
1. 轮询(默认)
请求按顺序依次转发给后端服务器,每个服务器的请求次数相同,无需额外配置,适合后端服务器性能一致的场景。
2. 权重策略(weight)
给性能更好的服务器设置更高的权重,权重值越大,接收的请求越多,适合后端服务器性能不一致的场景:
upstream tomcat-cluster {
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
server 127.0.0.1:8082 weight=3;
}
3. IP 哈希(ip_hash)
根据客户端的 IP 地址进行哈希计算,将同一个客户端的所有请求转发给同一台后端服务器,实现会话保持,适合需要保存用户会话的场景:
upstream tomcat-cluster {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
4. 最少连接数(least_conn)
Nginx 会将请求转发给当前连接数最少的后端服务器,适合请求处理时间不一致、并发波动较大的场景:
upstream tomcat-cluster {
least_conn;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
七、正向代理 vs 反向代理:别再搞混了
很多新手会把正向代理和反向代理弄混,其实二者的核心区别只有一个:代理的对象不同,记住这一点,就能轻松区分。
正向代理:代理客户端
正向代理是客户端主动配置代理服务器,由代理服务器代替客户端向目标服务器发送请求,目标服务器不知道真实的客户端是谁,只能看到代理服务器的地址。
- 核心特点:隐藏真实客户端,保护客户端隐私和安全;
- 常见场景:网络代理工具、翻墙工具。
反向代理:代理服务器
反向代理是服务器端配置,客户端直接访问代理服务器(Nginx),由代理服务器代替客户端向后端服务器集群发送请求,客户端不知道真实的后端服务器是谁。
- 核心特点:隐藏真实服务端,保护后端服务器安全,同时实现负载均衡;
- 常见场景:企业网站的反向代理、负载均衡配置。
一句话总结:代理哪端,就隐藏哪端,正向代理隐藏客户端,反向代理隐藏服务端。
八、总结
Nginx 作为一款高性能的服务器工具,核心优势在于高并发、低消耗、配置简单、功能全面,从静态资源部署到反向代理,从解决跨域到负载均衡,几乎覆盖了后端部署的所有核心需求。
对于新手来说,无需一开始就深究复杂的配置,先掌握安装启动、核心命令、四大应用场景和基础配置,通过实际操作熟悉后,再逐步学习高级策略(如缓存、SSL 加密、限流)。Nginx 的配置看似繁琐,但核心逻辑非常清晰,只要多练、多试,就能快速掌握,成为后端部署的'得力助手'。
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online