nginx找不到静态(css,js,html)文件404报错,root的解析

刚入门pythonweb的时候不知道nginx的配置文件为何物,也不知道怎么配置,找不到静态文件是很正常的。

首先举个栗子:

如果你web移植到服务器端后找不到静态文件,首先打开页面-》右键-》检查元素。

如果没有出现这些内容,看右上角红点,点击,如下,我有13个错误

然后把鼠标移到文件名上:如上图我的第一个文件是morris.css。鼠标放在上面会显示页面访问的完整路径。

我第一个文件显示的路径是http:10.10.10.10:5000/static/css/morris.css.

然而我确实有static文件夹,static文件夹下面也有css文件夹,css下也有这个文件。为什么找不到呢?因为root设置错了。

morris的绝对路径为:/home/kzl/data/app/static/css/morris.css。

设置location如下:(location在nginx的配置文件中配置)

location ~.*(js|css|png|gif|jpg|mp3|ogg)$ {
        root /home/kzl/data/app/;
    }

这个location说明如果你要访问js,css,png...结尾的文件,你需要在你的访问路径前加上root。

这个root实际上就是替换了网页上的http:10.10.10.10:5000。如果加了这个location,那么网页在访问http:10.10.10.10:5000/static/css/morris.css.这个路径的时候,因为文件结尾是css匹配到了这个location,然后网页就会访问

root+[匹配路径],即为:/home/kzl/data/app/static/css/morris.css,这样就找到文件了。

其次深入学习:

然后安利一个介绍location解析的博客,说明了location的匹配路径。location这个关键字就是用来定位文件的。

https://moonbingbing.gitbooks.io/openresty-best-practices/ngx/nginx_local_pcre.html

知道了location的基本匹配规则,相信应该读者对nginx配置文件中(我的在/安装路径/nginx/conf/nginx.conf中)的location有了一个清晰的认识。接下来我们来了解一下location里面的root是做什么的。

上面的网站介绍了location的匹配规则,是指访问什么url的时候会触发这个location,然而,触发了location匹配之后,我们到哪里去读文件呢?这就关乎root的配置了。

举个例子:

url访问的是http:10.10.10.10:5050/data/my/kzl.css,怎么样知道服务器端是这个路径呢?,打开你的网页,右键查看源码,在html的head里面就有。

定义location:(这是另外一种定义location的方式,通过路径来定义)

location /my/ {
    root /data;
}

当访问kzl.css这个文件时,触发这个location,然后这个location会在

root + 【匹配路径】 这个路径中找文件。在此处就是在http:10.10.10.10:5050/data/my/目录下找kzl.css。这样就可以找到文件了。

此外:更改配置文件之后,注意需要清除浏览器缓存,谷歌浏览器快捷键:ctrl+shift+delete,清除缓存后再次刷新网页即可。

其实除了root之外,还有令一种配置路径的方式:详见:https://blog.csdn.net/line_aijava/article/details/71473793

猜你喜欢

转载自blog.csdn.net/lwgkzl/article/details/81278985