为什么静态内容请求转到uwsgi?

时间:2016-11-04 13:12:36

标签: django nginx uwsgi

我正在设置我的Django项目以使用uwsgi和nginx。对于静态内容,我在我的nginx.conf中有以下内容:

location /static {
    alias /Users/me/mystatic; # your Django project's static files - amend as required
}

我已将STATIC_ROOT设置为/Users/me/mystatic并调用collectstatic将所有静态文件复制到该目录中。在我的uwsgi日志中,我看到了静态内容的GET请求。由于nginx应该提供静态内容,为什么GET请求被发送到uwsgi?

2 个答案:

答案 0 :(得分:2)

确保STATIC_URL设置为"/static/"

nginx conf看起来应该是这样的:

server {

    listen  80 ;
    server_name XXXX;
    client_max_body_size 4G;            

    location /static/ {
        alias <path-to-collectstatic>
    }

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/uwsgi_web.sock;
    }

}

请注意在/

location块中附加static

最后,请确保应用程序服务器正在DEBUG作为False

运行

答案 1 :(得分:0)

问题是我在/usr/local/etc/nginx/sites-enabled中放置了自己的nginx.conf,而不是/usr/local/etc/nginx/servers。在/usr/local/etc/nginx/nginx.conf中,include servers/*;即将结束。因此,UWSGI仍在提供静态文件。我跟着django-nginx-uwsgi tutorial,我假设我必须创建一个新的sites-enabled目录。我正在使用OS X.

我在Linux上看到,/etc/nginx/nginx.conf最后包含include /etc/nginx/sites-enabled/*;,因此本教程中的步骤适用于Linux。

/末尾的额外/static没有什么区别,但是在所有路径的末尾都没有它会受到伤害。