我有 django 应用程序和 nginx

I have django application and nginx

我有 django 应用程序和 nginx,它从浏览器访问文件 /static。

比如

http://example.com/static/file.png

但是我的应用程序在 /staticroot 下有文件。

http://example.com/staticroot/file.png

它显示图像。

所以,我开始 nginx

location /static {
    alias /staticroot;
}

然而并没有出现

我的环境是调试模式。

我的设置py是这样的,

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

STATIC_ROOT = os.path.join(config("PROJ_PATH"), 'staticroot')

我该如何解决这个问题?

为了提供 staticroot 内容,您必须重命名 STATIC_URL='/staticroot/' 并在 nginx 文件中进行这样的更改

location /staticroot/ {
    alias /home/your_username/project_name;
}

当请求到达 /staticroot/somefile Nginx 将在文件系统中查找名为 staticroot 的目录,它将提供服务文件。
因此,当您为静态或媒体内容定义 url 时,请确保您已创建具有相同名称的目录。
有关更多信息,请查看 Serving Static Content Nginx 文档。

/etc/nginx/sites-available/you_project 设置

location /static/ {
    root /home/your_admin_name/your_project_folder_name;
}

在settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]