Nginx 为 Django 应用程序响应 404 但静态文件有效
Nginx responds 404 for Django app but static files work
我关注 this tutorial 以便使用 uWSGI 和 Nginx 在 DigitalOcean VPS 上部署我的 Django 应用程序。静态文件运行良好,但 Django 应用程序本身却不行。 (404 未找到 - nginx/1.9.6)
# Where to look for content (static and media)
root /srv/www/$host/;
# Allow gzip compression
gzip_types text/css application/json application/x-javascript;
gzip_comp_level 6;
gzip_proxied any;
# Look for files with .gz to serve pre-compressed data
gzip_static on;
server {
listen 80;
# nginx docs recommend try_files over "if"
location / {
# Try to serve existing files first
try_files $uri @proxy =404;
}
location @proxy {
# Pass other requests to uWSGI
uwsgi_pass unix://srv/apps/_/server.sock;
include uwsgi_params;
}
}
try_files
的目的是测试本地文件是否存在,如果 none 找到则执行默认操作。在您的情况下,该默认操作是调用名为 @proxy
的命名位置。这就是你需要的:
location / {
try_files $uri @proxy;
}
location @proxy {
uwsgi_pass unix://srv/apps/_/server.sock;
include uwsgi_params;
}
详情见this document。
我关注 this tutorial 以便使用 uWSGI 和 Nginx 在 DigitalOcean VPS 上部署我的 Django 应用程序。静态文件运行良好,但 Django 应用程序本身却不行。 (404 未找到 - nginx/1.9.6)
# Where to look for content (static and media)
root /srv/www/$host/;
# Allow gzip compression
gzip_types text/css application/json application/x-javascript;
gzip_comp_level 6;
gzip_proxied any;
# Look for files with .gz to serve pre-compressed data
gzip_static on;
server {
listen 80;
# nginx docs recommend try_files over "if"
location / {
# Try to serve existing files first
try_files $uri @proxy =404;
}
location @proxy {
# Pass other requests to uWSGI
uwsgi_pass unix://srv/apps/_/server.sock;
include uwsgi_params;
}
}
try_files
的目的是测试本地文件是否存在,如果 none 找到则执行默认操作。在您的情况下,该默认操作是调用名为 @proxy
的命名位置。这就是你需要的:
location / {
try_files $uri @proxy;
}
location @proxy {
uwsgi_pass unix://srv/apps/_/server.sock;
include uwsgi_params;
}
详情见this document。