配置请求处理

基本配置

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

基本配置说明

  • location /:匹配所有请求
  • location /images/:匹配以 /images/ 开头的请求
  • root:指定网站根目录

基本配置原理: Nginx 根据 URI 选择位置,然后根据位置的配置处理请求。root 指令用于指定网站根目录,Nginx 会将 URI 附加到根目录后面,形成文件路径。

前缀匹配

location / {
    root /data/www;
}

location /images/ {
    root /data;
}

前缀匹配说明

  • location /:匹配所有请求
  • location /images/:匹配以 /images/ 开头的请求

前缀匹配原理: 前缀匹配用于匹配以指定前缀开头的 URI。前缀匹配会匹配最长的前缀。

正则表达式匹配

location ~ \.php$ {
    root /data/www;
}

正则表达式匹配说明

  • location ~ \.php$:匹配以 .php 结尾的请求

正则表达式匹配原理: 正则表达式匹配用于匹配复杂的 URI。正则表达式可以使用捕获组,捕获组可以在配置中使用。

精确匹配

location = /404.html {
    root /data/www;
}

精确匹配说明

  • location = /404.html:精确匹配 /404.html

精确匹配原理: 精确匹配用于匹配指定的 URI。精确匹配的优先级最高。

优先级

  1. 精确匹配 =
  2. 前缀匹配 ^~
  3. 正则表达式匹配 ~~*
  4. 前缀匹配

优先级原理: Nginx 按照精确匹配、前缀匹配 ^~、正则表达式匹配 ~~*、前缀匹配的顺序匹配位置。

匹配修饰符

修饰符说明示例
=精确匹配location = /
^~前缀匹配,优先级高于正则表达式location ^~ /images/
~正则表达式匹配,区分大小写location ~ \.php$
~*正则表达式匹配,不区分大小写location ~* \.php$
无修饰符前缀匹配location /