Django:如何传递nginx 405错误?

时间:2016-01-19 14:34:32

标签: django nginx

我喜欢Django的web应用程序使用了nginx + gunicorn + supervisor。它运行良好。但是当我尝试在django admin中添加带有图片的新帖子时,我得到405错误。在开发者服务器上工作正常 我的nginx配置如下:

upstream app_server {

  server unix:/tmp/PMC.sock fail_timeout=0;
}

server {

    listen   80;
    server_name site.ru;

    access_log /home/venv/PMC/logs/nginx-access.log main;
    error_log /home/venv/PMC/logs/nginx-error.log debug;

    location /static/ {
        alias   /home/venv/PMC/static/;
        access_log off;
    }

    location /media/ {
        alias   /home/venv/PMC/media/;
        access_log off;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        if (!-f $request_filename) {
            proxy_pass http://app_server;
            break;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

错误405是"方法不允许",这意味着无论是在Nginx级别还是使用视图装饰器,您只允许某些方法,即仅GETsafe methods,以及可能不是POST。因此,当得到'这个页面还可以,但是当发布'它回来你得到405错误。

注意:Nginx有特殊命令try_files而不是if(!-f ...)。使用它会更好,因为它提供了更好的性能和更安全。