2016-01-20 147 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語法和處理規則。