对于静态文件,nginx支持配置文件路径。关键字为root和alias
简介
配置系统/data/www目录下有如下文件
─data
└─www
├─file
│ ├─a.txt
│ ├─b.txt
└─backup
├─c.txt
└─d.txt
nginx 配置中,location中配置root关键字。
server {
...
location /file {
root /data/www;
}
...
}
请求 localhost/file/a.txt 将返回 目录/data/ww/file/a.txt文件中的内容。
root和alias的区别
root与alias主要区别在于nginx如何处理location后面的uri.使用root时,location后面的uri参与路径的计算,使用alias时,uri不参与路径计算。
root支持的配置段:http、server、location
alias支持的配置段:location
举一个例子,依然使用前文中的/data/www目录中的数据,nginx配置如下
请求匹配后,映射到服务器的数据文件路径如下:
try_files命令
其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。
try_files file1 file2 ... (uri 或 =code)
使用示例,修改/data/www目录中的数据结构如下,期望实现的功能是, 发现请求的是txt的数据,优先在/data/www/file目录中查找文件,如果找不到尝试在/data/ww/backup目录中查找,都找不到的时候,返回 ”file not found“
nginx配置如下
server {
...
location ~ .txt$ {
root /data/www;
try_files /file /backup /notfound
}
location /notfound {
echo "file not found";
}
...
}
使用=code模式的配置
server {
...
location ~ .txt$ {
root /data/www;
try_files /file /backup =404
}
error_page 405 /404.html;
...
}