从 Nginx 提供静态内容,但在 Django 中处理错误页面

Serving Static content from Nginx but handling error pages in Django

我的静态和媒体文件由 Nginx 提供,其他请求由 Django 提供。

我有一个由 Django 提供的自定义 404 页面。由于 Nginx 正在处理静态内容,任何对 /static/* 抛出 404 的请求也由 Nginx 处理。我可以在 Nginx 中设置静态自定义 404 页面,但我希望 Django 处理任何 404。

是否可以从 Nginx 提供静态内容,但在 404 的情况下,请求会转发到 Django?

假设您已经定义了 django 代理通行证

upstream django_server {
    server 127.0.0.1:8000;
}

那你可以这样做

location /static/ {
     try_files $uri @django;
     ....
}
location @django { 
    proxy_pass django_server;
}