我喜欢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;
}
}
}
答案 0 :(得分:1)
错误405是"方法不允许",这意味着无论是在Nginx级别还是使用视图装饰器,您只允许某些方法,即仅GET
或safe methods
,以及可能不是POST
。因此,当得到'这个页面还可以,但是当发布'它回来你得到405错误。
注意:Nginx有特殊命令try_files
而不是if(!-f ...)
。使用它会更好,因为它提供了更好的性能和更安全。