代码之家  ›  专栏  ›  技术社区  ›  Franco Correa

Nginx对Django应用程序响应404,但静态文件有效

  •  1
  • Franco Correa  · 技术社区  · 9 年前

    我跟着 this tutorial 为了让我的Django应用程序部署在带有uWSGI和Nginx的DigitalOcean VPS上。静态文件工作得很好,但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;
        }
    }
    
    1 回复  |  直到 9 年前
        1
  •  2
  •   Richard Smith    9 年前

    目的 try_files 是测试本地文件是否存在,如果没有找到,则执行默认操作。在您的情况下,默认操作是调用名为 @proxy 。这就是您需要的:

    location / {
        try_files $uri @proxy;
    }
    location @proxy {
        uwsgi_pass unix://srv/apps/_/server.sock;
        include uwsgi_params;
    }
    

    看见 this document 详细信息。