LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

一张图读懂 nginx.conf:从入门到精通的 5 个核心配置块

admin
2026年4月1日 22:1 本文热度 32

Nginx 的 nginx.conf 看起来复杂,其实核心就五个配置块:main、events、http、server、location。把这五个搞明白,Nginx 就算入门了。

其中最让人头疼的是 location 的匹配规则。什么时候用 =,什么时候用 ^~,正则匹配怎么生效,很多人配完心里都没底。

这篇文章把 nginx.conf 的结构拆开讲清楚,把 location 匹配规则说明白。


一、为什么是 Nginx?

Nginx 是现代 Web 服务的“交通枢纽”,负责接收所有请求,然后根据配置精准分发给对应的服务(静态文件、后端应用、缓存服务器等)。

选择它的理由:

  • 高性能:基于事件驱动的架构,能处理海量并发连接
  • 功能强大:反向代理、负载均衡、缓存、HTTPS、限流,应有尽有
  • 配置灵活:用一个配置文件就能管理整个站点的路由规则

二、nginx.conf 的骨架:从外到内的五个核心块

Nginx 的配置文件从外到内,层层嵌套:

# 第一层:全局块 (main)
user  nginx;
worker_processes  auto;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

# 第二层:事件块 (events)
events {
    worker_connections  1024;
}

# 第三层:HTTP块 (http)
http {
    # HTTP全局配置
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    # 第四层:Server块 (server)
    server {
        listen       80;
        server_name  localhost;

        # 第五层:Location块 (location)
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    }
}

各层级的作用:

层级
作用
配置频率
全局块 (main)
运行用户、工作进程数、错误日志
通常配好就不动
事件块 (events)
网络连接机制,决定并发能力
通常配好就不动
HTTP块 (http)
HTTP 公共配置,被所有 server 继承
按需调整
Server块 (server)
虚拟主机,定义监听的端口和域名
新增站点时配
Location块 (location)
URL 路径的处理逻辑
最常配置


三、核心攻坚:location 匹配规则

location 决定了一个请求 URL 应该由哪个块来处理。

匹配语法与优先级

匹配类型
语法示例
优先级
精确匹配
location = /path最高
前缀匹配
location ^~ /static/次高
,匹配后不再检查正则
正则匹配
location ~ \.php$
按文件中顺序匹配
普通前缀匹配
location /最低

核心规则:

  1. 先检查所有前缀匹配=^~、普通)
  2. 如果有精确匹配=),直接使用,结束
  3. 记录下最长的普通前缀匹配结果
  4. 然后检查正则匹配~~*
  5. 如果有正则匹配成功,就使用它
  6. 如果没有正则匹配成功,就使用之前记录的最长普通前缀匹配

案例:一个域名下的两个服务

假设要配 www.example.com

  • 静态前端文件放在 /var/www/html
  • API 服务运行在 http://127.0.0.1:3000
server {
    listen 80;
    server_name www.example.com;

    location / {
        root /var/www/html;
        index index.html;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:3000/;
        proxy_set_header Host $host;
    }
}

用户访问 www.example.com/api/users

  1. 检查前缀匹配,location / 和 location /api/ 都匹配
  2. 最长前缀匹配是 /api/
  3. 没有正则匹配,所以最终使用 /api/ → 代理转发成功

几点建议:

  • 优先用 location ^~ /path/ 做路径明确的静态资源和 API 路由,跳过正则匹配,效率更高
  • 正则匹配只用于特殊场景,如处理 .php 文件、图片防盗链
  • 精确匹配 = 用于精准路径,如网站根路径或特殊页面

四、两个很好用的用法

1. 用 location = / 拦截敏感文件

# 精确匹配根路径
location = / {
    root /var/www/project;
    index index.html;
}

# 拦截 .git 目录
location ~ /\.git {
    deny all;
    return 403;
}

# 其他请求正常处理
location / {
    root /var/www/project;
    try_files $uri $uri/ /index.html;
}

location = / 优先级最高,根路径请求不受后面规则干扰。正则匹配 ~ /\.git 拦截所有带 .git 的路径。

2. 用 try_files + 命名 location 实现“静态优先,动态兜底”

location /blog/ {
    root /var/www/blog-static;
    try_files $uri $uri/ @backend;
}

location @backend {
    proxy_pass http://127.0.0.1:3000;
}

请求先找静态文件,找到了直接返回;找不到就自动跳转到 @backend 代理给后端。整个过程不用 if,逻辑清晰。在旧项目迁移时这个很好用。


五、配置建议:不同场景怎么配

你的需求
推荐配置
理由
托管静态网站
location / { root /path; index index.html; }
最基础的配置
托管静态目录
location ^~ /static/ { root /path; }
前缀匹配,精准高效
代理后端 API
location ^~ /api/ { proxy_pass http://backend; }
前缀匹配,逻辑清晰
处理 PHP 文件
location ~ \.php$ { fastcgi_pass ...; }
必须用正则匹配
缓存图片文件
`location ~* .(jpg
png


六、我的配置文件模板

每次新项目直接复制,改改路径和端口就能用:

server {
    listen 80;
    server_name your-domain.com;

    access_log /var/log/nginx/your-domain.com.access.log;

    location / {
        root /var/www/your-project/frontend;
        try_files $uri $uri/ /index.html;
    }

    location ^~ /api/ {
        proxy_pass http://127.0.0.1:3000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}


阅读原文:原文链接


该文章在 2026/4/2 12:25:50 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved