nginx配置之location配置教程

云计算

nginx配置之location配置教程

2025-03-21 00:02


NGINX Location配置完全指南 一、基础语法与优先级 location指令是NGINX的核心路由配置模块,其基本语法结构为:

                                            




NGINX Location配置完全指南

一、基础语法与优先级

location指令是NGINX的核心路由配置模块,其基本语法结构为:

location [修饰符] 匹配模式 {
    # 配置指令
}

匹配优先级规则表

匹配类型 优先级顺序 示例 说明
精确匹配 1️⃣最高 location = /api 完全匹配路径
前缀匹配 3️⃣ location ^~ /static 禁用正则检查的路径匹配
正则匹配 2️⃣ location ~ \.php$ 区分大小写的正则匹配
正则不区分大小写 2️⃣ `location ~*.(jpg png)`
通用匹配 4️⃣最低 location / 默认匹配所有请求

二、典型配置场景详解

1. 静态文件服务

location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {
    root /data/web/static;
    expires 30d;
    access_log off;
    add_header Cache-Control "public, max-age=2592000";
}
  • 代码解析
    • ~*:不区分大小写的正则匹配
    • root:指定静态文件根目录
    • expires:设置浏览器缓存时间(30天)
    • access_log off:禁用访问日志记录
    • add_header:添加HTTP响应头

2. 反向代理配置

location /api/v1/ {
    proxy_pass http://backend_server/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
}
  • 关键参数
    • proxy_pass:后端服务地址(注意结尾斜杠的作用)
    • proxy_http_version 1.1:启用HTTP长连接
    • Connection "":清除默认的close头

3. 动态请求处理

location ~ \.php$ {
    root           /data/web;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
  • 安全建议
    • 建议添加 try_files $uri =404防止任意文件执行
    • 设置 fastcgi_param时使用绝对路径

三、进阶配置技巧

1. 路径重写

location /legacy {
    rewrite ^/legacy/(.*) /new/$1 permanent;
}
  • 重写规则说明
    • ^/legacy/(.*):捕获legacy路径后的所有字符
    • /new/$1:重定向到新路径
    • permanent:返回301永久重定向状态码

2. 多条件匹配

location / {
    # 优先检查文件是否存在
    try_files $uri $uri/ @backend;
  
    # 设置默认类型
    default_type text/html;
}

location @backend {
    proxy_pass http://app_server;
}
  • 流程说明
    1. 尝试访问真实文件
    2. 尝试访问目录索引
    3. 最终转发到后端服务

3. 访问控制

location /admin {
    allow 192.168.1.0/24;
    deny all;
    auth_basic "Admin Area";
    auth_basic_user_file /etc/nginx/conf.d/htpasswd;
}
  • 安全配置
    • IP白名单限制
    • 基础认证双重保护
    • 密码文件建议使用 htpasswd生成

四、配置验证与排错

1. 配置语法检查

nginx -t
# 返回示例:
# nginx: configuration file /etc/nginx/nginx.conf test is successful

2. 调试日志分析

error_log /var/log/nginx/debug.log debug;

查看请求匹配过程:

2023/09/01 10:00:00 [debug] 1234#0: *1 test location: "/"
2023/09/01 10:00:00 [debug] 1234#0: *1 test location: "static"

3. 请求跟踪工具

strace -p `pidof nginx` -e trace=file

五、最佳实践建议

  1. 路径设计原则

    • 精确匹配路径放最前
    • 正则匹配按复杂度排序
    • 通用匹配放在最后
  2. 性能优化

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    
  3. 安全加固

    
                                        
    标签:
    • nginx
    • location
© 蓝易云.