Nginx的404文件Django的静态文件未找到错误
我得到以下错误,而试图访问静态文件的文件,但我想辅助系列static/js/main.js
文件,nginx
正在寻找static/js/main.js/index.html
..下面是针对错误相同。Nginx的404文件Django的静态文件未找到错误
2016年1月20日3点31分01秒[错误] 2410#0:* 1 “/home/ubuntu/vnv/near/near/static/js/main.js/index.html”不是 found(20:Not a directory),client:162.111.50.122,server:my.domain.com,request:“GET /static/js/main.js/ HTTP/1.1”,host:“my.domain .COM”
下面是我的服务器块..
server {
listen 80;
server_name my.domain.com;
# location ~ ^/(static/.*) {
location ~ /static {
root /home/ubuntu/vnv/near/near; # near consist of static directory
}
location ~/{
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
proxy_pass http://near_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
而且它是在URI的最后追加/
,有什么事情成为这里的问题?
注:我已经经历了与此相关的大多数答案,但我没有找到适合这种情况的适当解决方案。
如果请求URI以/
结尾,nginx
会将其视为目录并应用索引规则。除非被覆盖,否则nginx
会查找index.html
文件。
从错误消息中,我们看到GET请求用于/static/js/main.js/
。所以问题是谁追加/
到请求URI?
如果您现在查看访问日志,您将看到一行包含GET /static/js/main.js/ HTTP/1.1 404
的行,其中列出了HTTP响应代码。
如果上面的行包含GET /static/js/main.js HTTP/1.1 3xx
那么nginx
增加了额外的/
。如果没有这样的线路,那么客户要求错误的URL,并且您需要寻找其他地方的问题的解决方案。
无关你的问题:你为什么要使用正则表达式location
块时前缀location
块似乎更合适?
你或许应该使用:
location /static { ... }
location/{ ... }
你现有的配置效率低下,与相匹配的URI /static
字符串中的任何位置嵌入,如:/something/static.php
。
查看this document的location
语法和处理规则。
它会帮助更好,如果你包括你的html代码或任何你想要访问该文件 –
@AlexJolig我只是试图直接从客户端访问静态文件,但问题是如果我启用'autoindex'然后它只让我成为'static'目录。对于静态目录中的其余文件,它给了我'404'。 BTW这些静态文件是我的'django'项目的一部分 –
当然'/ home/ubuntu/vnv/near/near/static/js/main.js'存在吗? –