这两天在搞Django,访问动态文件的时候很正常长,通过Nginx的代理带访问fcgi都没问题,但是比如访问css,jpg的时候就访问了,查看nginx的error之后看到是403就是返回没有权限,于是就改吧。我是吧这个文件放在Home下的子文件夹中的。于是就相当与个人用户吧。 然后用

./manage.py runfcgi daemonize=false host=127.0.0.1 port=8005

开启python的fcgi的解析. 在nginx中添加python的代理本地环境域名也是解析到本地,注意这里python的解析我是用的端口而没有用socket.

upstream mysite {
    #server unix:/tmp/uwsgi.sock; # use Unix socket
    server 127.0.0.1:8005; # uncomment to use a port instead
}
server {
    listen       80;
    server_name  python.codewalker.com;
    autoindex on;
    location /static {
        alias /path/to/static;
    }
    location / {
        proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;
        proxy\_set\_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://mysite;#这是重点
        fastcgi_pass mysite;
        fastcgi\_param PATH\_INFO $fastcgi\_script\_name;
        fastcgi\_param REQUEST\_METHOD $request_method;
        fastcgi\_param QUERY\_STRING $query_string;
        fastcgi\_param SERVER\_NAME $server_name;
        fastcgi\_param SERVER\_PORT $server_port;
        fastcgi\_param SERVER\_PROTOCOL $server_protocol;
        fastcgi\_param CONTENT\_TYPE $content_type;
        fastcgi\_param CONTENT\_LENGTH $content_length;
        fastcgi\_pass\_header Authorization;
        fastcgi\_intercept\_errors off;
        break;
            #include /etc/nginx/uwsgi_params;
    }
}

很奇怪哦。动态文件可以访问,但是静态文件就是403.没权限。 曾经我测试过,在没有设置过nginx 的user时候用浏览器访问nginx代理的python脚本生成文件,文件owner是我自己而不是root 。 好,那么说明我访问的时候也是我自己来访问而不是root(因为我猜想,在我开启服务的时候比如是root,所以也就是用root是这个程序的owner),那么现在当我访问某文件的owner为自己的时候就是正确的。 但是!但是这个时候我的猜想错误了,通过我最上面叙述的方法是无法访问而返回403,于是我把所有这个网站改成777 不行哦!是不行哦!所有人都可以访问都还是403,奇怪了吧! 最后,最后,修改nginx的配置文件在top添加user xxx;也就是我自己之后,nginx -s reload之后就正常了,为啥呢?