簡體   English   中英

如何通過 nginx 服務 django 媒體文件?

[英]How to serve django media files via nginx ?

我是 Nginx 的新用戶,我已成功將我的 django 項目綁定到 Nginx。但是我無法提供我的 static 文件,我想我錯誤地設置了媒體文件夾的位置。 這是我的文件樹:

root_directory
     my_django_project
         ...
         manage.py
         app1
         app2
         media
           admin
           css
           js
           ...

我的 nginx.conf 是這樣的:

        server {
                listen 192.168.1.9:80;
                server_name localhost;
                # site_media - folder in uri for static files                                                                                                

            location /media/  {
            root /home/nazmi/workspace/portal/media/;                                                                                       
                }

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) {
  access_log   off; # po co mi logi obrazków :)                                                                                                              
  expires      30d;
}
                location / {
                        # host and port to fastcgi server                                                                                                    
                        fastcgi_pass 127.0.0.1:8080;
            fastcgi_param PATH_INFO $fastcgi_script_name;
                        fastcgi_param REQUEST_METHOD $request_method;
                        fastcgi_param QUERY_STRING $query_string;
                        fastcgi_param CONTENT_TYPE $content_type;
                        fastcgi_param CONTENT_LENGTH $content_length;
            fastcgi_pass_header Authorization;
                        fastcgi_intercept_errors off;
                        }
                access_log      /var/log/nginx/localhost.access_log main;
                error_log       /var/log/nginx/localhost.error_log;
        }
}

當我打開我的管理頁面時,所有 css 頁面都出現 404 錯誤。 你能告訴我如何正確設置我的媒體路徑嗎?

這是我如何設置 nginx 服務器的示例

server {
    server_name example.com www.example.com;
    location /static {
        autoindex on;
        alias /home/myusername/myproject/static/;
    }
    location /media {
        autoindex on;
        alias /home/myusername/myproject/media/;
    }
    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

我在本地主機端口 8000 上使用 Gunicorn 為 django 提供服務。(這就是 proxy_pass 的用途)

Nginx wiki示例配置也可能對您有所幫助。 請注意,在他們的靜態文件服務中,他們指定了允許的文件類型並使用“root”而不是“alias”,但它們是相似的。

這個ServerFault問題可能會有所幫助。

以下代碼對我有用:

server {
    server_name example.com www.example.com;
    location /static {
        autoindex on;
        **alias /home/myusername/myproject/;**
    }
    location /media {
        autoindex on;
        **alias /home/myusername/myproject/;**
    }
    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

我根據之前的答案將不同的部分加粗。

如果媒體文件未提供服務,請嘗試在啟用站點的目錄內的 conf 文件中設置媒體位置,如下所示。 這對我有用。

location /media {
    root /home/username/projectname/;

你已經設置了這個:

location /media/  {
    root /home/nazmi/workspace/portal/media/;                                                                                       
}
location /media  {
     alias /home/user/django_app/media; #(locaion of your media folder)                                                                                       
}

在 nginx 配置中嘗試此代碼,為 django 應用程序提供 static 和媒體文件(沒有自動索引設置)

暫無
暫無

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

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