最近要用nginx配置一个静态资源服务器,用来访问上传的文件,但是一直就是404错误,采坑了好久,原因就是不了解nginx路径的匹配机制,现在理解了,顺便记录一下,也为后续的小伙伴一个参考
配置静态资源有两种方式
- root 方式
- alias 方式
- 先说第一种配置,配置静态网站、反向代理的时候最常见 摘取server部分配置
server {
listen 8080;
# 如果就是外网ip,则可以为空或者不配置
server_name "";
location /images/ {
root /home/www;
# 防止中文乱码
charset utf-8;
#autoindex on;
}
}
这种配置配置好之后,如果我们去访问,访问地址localhost:8080/images/a.jpg
,我相信大多数小伙伴跟我想的一样,nginx应该会去/home/www
内去查找资源,但是实际nginx会去/home/www/images/
目录下面查找,是不是明白为什么会404了?
那我们刚刚想到的方式不对吗?必须要加上配置的URI路径吗?答案肯定是否定的
- 第二种方式就是我们想要的方式啦,上配置
server {
listen 8080;
# 如果就是外网ip,则可以为空或者不配置
server_name "";
location /images/ {
alias /home/www;
# 防止中文乱码
charset utf-8;
#autoindex on;
}
}
就是单纯的把root改为了alias,就实现了我们想要的方式。nice~