提供 Django 静态文件的 Nginx 必须具有与 URL 同名的文件夹
Nginx serving Django static files must have folder with same name as URL
我正在使用 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 部分没什么大不了的,但如果我使用嵌套的 URLs,我需要在 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 部分。
我猜你的情况应该是 alias
,而不是 root
:
location /static_folder/ {
alias /app_data/;
}
我正在使用 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 部分没什么大不了的,但如果我使用嵌套的 URLs,我需要在 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 部分。
我猜你的情况应该是 alias
,而不是 root
:
location /static_folder/ {
alias /app_data/;
}