2016-01-20 171 views
1

我得到以下错误,而试图访问静态文件的文件,但我想辅助系列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的最后追加/,有什么事情成为这里的问题?

注:我已经经历了与此相关的大多数答案,但我没有找到适合这种情况的适当解决方案。

+0

它会帮助更好,如果你包括你的html代码或任何你想要访问该文件 –

+0

@AlexJolig我只是试图直接从客户端访问静态文件,但问题是如果我启用'autoindex'然后它只让我成为'static'目录。对于静态目录中的其余文件,它给了我'404'。 BTW这些静态文件是我的'django'项目的一部分 –

+0

当然'/ home/ubuntu/vnv/near/near/static/js/main.js'存在吗? –

回答

1

如果请求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 documentlocation语法和处理规则。