官方文档:https://nginx.org/en/docs/http/ngx_http_core_module.html
1、root
root,用于设置请求的根目录:
Syntax: root path;
Default: root html;
Context: http, server, location, if in location
例如:
# 配置
location /test {
root /data/a;
}
请求:http://localhost/test/1.txt
$request_uri: /test/1.txt
处理结果:root 路径 + 用户 uri 请求
响应文件:/data/a/test/1.txt
2、alias
alias,用于定义指定位置的替换:
Syntax: alias path;
Default: —
Context: location
例如:
# 配置
location /test {
alias /data/a;
}
请求:http://localhost/test/1.txt
$request_uri: /test/1.txt
处理结果:alias 路径 + /1.txt(uri 去除匹配到的 location)
响应文件:/data/a/1.txt
如果在用正则表达式定义的 location 中使用 alias,则此类正则表达式应包含捕获,alias 应引用这些捕获,如下:
配置:
location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
alias /data/images/$1;
}
请求:http://localhost/users/xm/1.png
$1 为 xm/1.png
响应文件:/data/images/xm/1.png
正则解析:
^/users/:匹配以 /users/ 开头
():捕获括号中表达式匹配到的内容,可使用 $1 引用。
.+:表示匹配任意字符一个或多个
\.:匹配 . 字符
(:?xx|xx|xx)::? 放到这里表示匹配表达式,但不捕获匹配结果,不进行存储供后面使用。
jpe?g:可以匹配 e 0次或者1次,即匹配 jpg 和 jpeg
$:结尾