nginx访问静态资源报404错误的坑
解决nginx配置静态路径404的坑
1.使用root无加密访问静态资源
配置文件:
location /download/ {root /home/;autoindex on;}
访问url:
ip:端口/download
注意,接下来是重点
原理:
当你键入这个url(ip:端口/dowonload)的时候,nginx会去你系统下的home目录下的download目录下去加载资源。但是如果找不到的话就会返回404错误,这就是为什么报404错误。
举例:
配置文件:
键入的url和返回的结果:
linux下的文件:
误区:
很多小伙伴会依瓢画葫芦,直接将所有路径往上写(如下图):
然后访问的时候就会报错404,这其实就是没有了解nginx在访问静态资源的机制是怎样的。如果这么写的话,那就是键入Url后,nginx会去/home/download/download
下去寻找对应的资源了。
错误图例:
Linux文件目录:
配置文件:
访问url效果:
2.使用alias访问静态资源
使用了alias访问的话,那么配置文件就可以按照常规的逻辑来配置。
比如以上个例子为例,他的配置文件只需修改如下:
和当键入ip:端口号/download
的时候,nginx就会去/home/download
下去寻找资源:
3.使用加密来保护文件安全
这个是当我们访问静态资源的时候需要输入对应的用户名和密码才能进行访问。
配置文件:
主要是auth_basic_user_file
这个文件,他会去你指定的文件下寻找对应的账号密码。而账号密码的格式为username:passwordd
而且密码不能是明文的。
具体文本格式如下:
zz为账户名,后面那一串是密文密码。
获得密文密码的方式:
输入openssl passwd
命令:
输入完后,先输入密码然后回车,然后在确定密码(在输入一次密码)在回车,最终得到一串字符串就是密文密码。
效果:
输入正确的用户名和密码即可访问到静态资源。
小贴士
输入url的时候一定要注意看看是不是漏了字符,比如少了一个/
;或者是配置nginx的时候少了/
多了什么字符啥的,这个一定要细心检查一下,避免不必要的错误,
小结
1.root
如果配置文件使用root,那么nginx最终得到的路径就是配置的文件路径 + 匹配的路径
。简单的说就是root旁边的路径在加上location的路径就是nginx要访问的静态资源。
图解:
对比:
2.alias
逻辑比较正常,nginx最终得到的路径就是配置文件的路径
,比root少一个location的路径。
标签:
相关文章
-
无相关信息