【问题标题】:Nginx serving Django static files must have folder with same name as URL为 Django 静态文件提供服务的 Nginx 必须具有与 URL 同名的文件夹
【发布时间】:2021-06-27 06:49:47
【问题描述】:

我正在使用 Nginx 提供静态文件。我的配置如下所示:

# django settings
STATIC_URL = '/static_folder/'
STATIC_ROOT = '/app_data/'

# nginx config
location /static_folder/ {
    root /app_data/;
}

它不是这样工作的。我需要更改 STATIC_ROOT 以包含 static_folder 部分。像这样:

# django settings
STATIC_URL = '/static_folder/'
STATIC_ROOT = '/app_data/static_folder/' # <-- here

# nginx config
location /static_folder/ {
    root /app_data/;
}

我希望能够像这样服务:

/app_data/logo.png
instead of this:
/app_data/static_folder/logo.png

如果您在 STATIC_URL 中有一个 URL 部分,这没什么大不了的,但如果我使用嵌套 URL,我也需要在 STATIC_ROOT 中重复它。它变得太深了。例如:

# django settings
STATIC_URL = '/static_folder/and/another/folder'
STATIC_ROOT = '/app_data/static_folder/and/another/folder/' 

# nginx config
location /static_folder/ {
    root /app_data/;
}

我怎样才能摆脱这个并在 /app_data/ 中提供文件而不在文件夹结构中包含 static_url 部分。

【问题讨论】:

  • 第一个代码有什么错误? 404?
  • 是的,我收到 404 错误代码。
  • 其实,既然你希望最终结果是app_data/file.txt,那么STATIC_URL和nginx位置不应该也是'app_data'吗?

标签: django nginx nginx-location django-staticfiles


【解决方案1】:

我想在你的情况下它必须是alias,而不是root

location /static_folder/ {
    alias /app_data/;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 2021-12-02
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    相关资源
    最近更新 更多