【开发工具】Nginx基础
Nginx 简介
Nginx(发音为 “engine-x”)是一款高性能的开源 Web 服务器,同时也可以用作反向代理服务器、负载均衡器和 HTTP 缓存。它由俄罗斯工程师 Igor Sysoev 于 2004 年首次发布,如今已成为全球使用最广泛的 Web 服务器之一。
核心特点
- 高并发、低内存:Nginx 采用异步非阻塞的事件驱动架构,能够轻松处理数万个并发连接,内存占用极低。
- 高性能:静态文件处理速度极快,性能远超传统的 Apache。
- 反向代理:可以将客户端请求转发到后端服务(如 Node.js、Python、PHP 等),隐藏真实服务地址。
- 负载均衡:支持多种负载均衡策略(轮询、加权、IP Hash 等),将流量分发到多台服务器。
- SSL/TLS 终止:支持 HTTPS,可统一在 Nginx 层处理 SSL 证书,简化后端服务配置。
- 热更新:支持不停机重新加载配置文件,做到零宕机更新。
常见使用场景
| 场景 | 说明 |
|---|---|
| 静态资源服务 | 直接托管 HTML、CSS、JS、图片等静态文件 |
| 反向代理 | 将请求转发到 Node.js / Python / Java 等后端 |
| 动静分离 | 静态文件由 Nginx 直接响应,动态请求转发后端 |
| 负载均衡 | 将流量分发到多个后端实例 |
| HTTPS 证书管理 | 统一处理 SSL,后端只需 HTTP |
Nginx 配置文件的位置
标准系统安装(Linux)
通过系统包管理器(如 apt、yum)安装的 Nginx,配置文件遵循标准路径:
主配置文件(全局唯一):/etc/nginx/nginx.conf
各站点配置文件:
1 | /etc/nginx/sites-available/你的站点名.conf # 存放所有站点配置 |
主配置文件通过以下指令引入站点配置:
1 | include /etc/nginx/sites-enabled/*; |
宝塔面板安装
通过宝塔面板安装的 Nginx 所有文件集中在 /www/ 目录下:
主配置文件(全局):/www/server/nginx/conf/nginx.conf
各站点配置文件:/www/server/panel/vhost/nginx/*.conf
宝塔会根据站点类型自动为配置文件添加前缀,例如,HTML 静态站点 的配置文件名为:html_example.com.conf
主配置文件通过 include /www/server/panel/vhost/nginx/*.conf; 指令引入所有站点配置
配置字段详解
Nginx 的配置文件分为两层:主配置文件(全局生效)和站点配置文件(单个站点生效)。一般情况下,几乎只需要改站点的配置文件,主配置文件很少动。
主配置文件(nginx.conf) 主要调整全局性能参数:
worker_processes:工作进程数(一般设为 CPU 核心数)worker_connections:每个进程的最大连接数gzip压缩开关- 日志格式定义
client_max_body_size:上传文件大小限制(这个偶尔需要改,比如你的图床如果上传大图就要在这里调)
站点配置文件(vhost/nginx/站点名.conf)
每个站点对应一个独立的配置文件,核心结构是一个或多个 server {} 块。下面以一个完整的主站配置为例,逐一讲解每个字段的含义。
server 块基础字段
1 | server { |
location 块:路径路由
location 是站点配置中最重要的部分,用于匹配请求路径并决定如何处理。
匹配规则优先级(从高到低):
| 写法 | 含义 |
|---|---|
location = /path |
精确匹配,优先级最高 |
location ^~ /path |
前缀匹配,匹配后不再检查正则 |
location ~ /path |
正则匹配,区分大小写 |
location ~* /path |
正则匹配,不区分大小写 |
location /path |
普通前缀匹配,优先级最低 |
常用示例:
1 | # 匹配所有请求(兜底规则,优先级最低) |
反向代理字段(proxy_pass)
反向代理是 Nginx 最常用的功能,将客户端请求转发到后端服务。
1 | location /api/ { |
注意
proxy_pass末尾斜杠的区别:
proxy_pass http://127.0.0.1:8000/api/— 请求/api/user转发为/api/userproxy_pass http://127.0.0.1:8000/— 请求/api/user转发为/user(自动去掉 location 前缀)
HTTPS 与 SSL 配置
1 | server { |
其他常用字段
1 | server { |
拓展阅读
- Web后端架构基础知识: https://tianlejin.top/blog/web_infra/

