0

我已经开发了 django 应用程序,现在使用 gunicron 和 nginx 在 freebsd 服务器上部署它。我在 installedapps 下的项目设置文件中添加了 guncorn。并将 gunicorn.conf.py 放在根目录中:

import os

def numCPUs():
    if not hasattr(os, "sysconf"):
        raise RuntimeError("No sysconf detected.")
    return os.sysconf("SC_NPROCESSORS_ONLN")

user = root
workers = numCPUs() * 2 + 1
bind = "127.0.0.1:8000"
pidfile = "/tmp/gunicorn-srv.pid"
backlog = 2048
logfile = "/data/logs/gunicorn_srv.log"
loglevel = "info"

然后在 nginx.conf 更新服务器标签:

    listen       80;
    server_name localhost;

    access_log   /var/log/nginx/nginx-access.log;
    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass   http://127.0.0.1:8000;
        #root   /usr/local/www/nginx;
        #index  index.html index.htm;
    }

    location  /media/ {
        root /data/webs/uni_rate;
    }
    location  /static/ {
        root /data/webs/uni_rate;
    }

现在我已经启动了 nginx 和 guncorn。如果我浏览我的公共 ip 页面,但不提供静态文件。如果我直接打

http://myip/static/folder/file.css

然后返回 403 错误。任何想法可能是什么原因或应该提供什么其他信息来诊断它。

我的媒体和静态目录分别是:

/data/webs/uni_rate/media
/data/webs/uni_rate/static

这是 nginx-access.log 的输出

182.178.6.248 - - [01/Apr/2013:11:14:54 -0500] "GET /static/bootstrap_toolkit_extras/css/bootstrap.css HTTP/1.1" 403 168 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv
:16.0) Gecko/20100101 Firefox/16.0"
182.178.6.248 - - [01/Apr/2013:11:15:00 -0500] "-" 400 0 "-" "-"
4

2 回答 2

1

您是否检查了 /data/webs/uni_rate/ 的所有父文件夹的读取权限?Nginx 用户必须对所有这些都具有读取权限。例如,/data、/data/webs、/data/webs/uni_rate。

于 2013-04-01T14:55:27.167 回答
1

尝试用以下内容替换静态媒体位置

location /static {
    alias /var/www/domain1/media/;
    autoindex on;
    access_log off;
} 

诀窍在于“别名”而不是“根”。

于 2013-04-01T17:56:26.363 回答