使用nginx在实时服务器中使用Django静态文件

时间:2015-02-23 02:04:41

标签: django nginx

我有一台运行django的实时服务器,地址为http://179.188.3.54/。正如您所看到的,该应用程序可以工作,但看起来静态文件不起作用。此外,如果我点击任何其他链接,不起作用。

此网站在开发版本中运行时没有任何问题。我不知道该怎么做才能解决这个问题。

这是我的nginx配置文件和我的settings.py

STATIC_URL = '/static/'
STATIC_ROOT = '/cinegloria/cinegloria/cinegloria/static/'

PS:我试图运行collectstatic;)

server {
    root /usr/share/nginx/www;
    index index.html index.htm;
    access_log /var/log/nginx/domain-access.log;
    server_name 0.0.0.0;

location / {
    try_files $uri $uri/ /index.html;
    proxy_pass_header Server;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_set_header X-Forwarded-For  $remote_addr;
    proxy_set_header X-Scheme $scheme;
    proxy_connect_timeout 10;
    proxy_read_timeout 10;
    proxy_pass http://0.0.0.0:8000/;
}
}

任何想法或示例代码将不胜感激!

2 个答案:

答案 0 :(得分:1)

/模式之前将静态服务添加到nginx conf:

location /static {
    alias /cinegloria/cinegloria/cinegloria/static/;
}

location / {
    ...
}

或者将STATIC_ROOT设置为www root:

下的目录
STATIC_ROOT = '/usr/share/nginx/www/static'

或者将www root的符号链接添加到静态目录:

$ ln -s /cinegloria/cinegloria/cinegloria/static /usr/share/nginx/www/static

答案 1 :(得分:1)

为静态文件添加另一个nginx指令。静态文件应该由nginx提供,而不是Django服务器。

location  /static/ {
    alias  /cinegloria/cinegloria/cinegloria/static/;
}

如果仍然无效,则可能需要添加mime类型指令。我昨天必须这样做,因为出于某种原因,当我使用别名时,nginx并没有提供正确的mime类型。

作为一个有用的指针,每当遇到这样的问题时,请查看你的nginx错误日志并粘贴最后几行进行调试。它位于/var/log/nginx/error.log或类似的路径。