簡體   English   中英

如何解決 nginx static 資產未找到錯誤

[英]how to resolve nginx static assets not found error

我的應用程序運行良好

location / {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/socket_file.sock;
}

但是當我包含 static assets location location ~*.\(css|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rtf)時,它會為 css,js 文件提供 404 not found 錯誤

server {
    listen 8080;
    server_name your_domain www.your_domain;
    location ~* \.(css|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rtf)$ {
       expires max;
       log_not_found off;
       access_log off;
    }

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/socket_file.sock;
    }
}

nginx 錯誤日志顯示`

“/usr/share/nginx/html/static/js/jspdf.js”失敗(2:沒有這樣的文件或目錄)'雖然我的 static 資產在 /ProjectDirectory/assets/

location是互斥的,即一次只能匹配一個。 當第一個位置(正則表達式)匹配時,第二個位置/中的指令將被忽略,並且 Nginx 將繼續執行此位置塊之外定義的任何內容(如果未定義)。 在您的情況下,很明顯root /usr/share/nginx/html是在外層某處定義的。

一個簡單的解決方案是將相同includeuwsgi_pass添加到第一個位置塊,但是由於您正在提供 static 文件,為什么不讓 Nginx 通過添加root /path/to/your/static/files處理它?

實際上,與其通過正則表達式匹配文件擴展名,不如將所有文件放在一個位置,並使用基於前綴的匹配:

location /static/ {
    alias /ProjectDirectory/assets/;
}

您可能想閱讀此答案以了解rootalias之間的區別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM