这是你的电话号码。ini文件:
module=myapp.wsgi:application
master=True
pidfile=/tmp/project-master.pid
socket=127.0.0.1:8000
vacuum=True
max-requests=5000
daemonize=/home/mercier/django/site/wsgi.log
buffer-size=327680
processes=16
listen=500
timeout=10
post-buffering=1
nginx使用uwsgi_pass指令转发连接。
从django请求中看不到任何帖子数据。POST只是{}。这是一个巨大的问题...我怎样才能解决这个问题?发布数据可见于开发(runserver)。
重要提示:nginx和wsgi都以200(OK)响应。我还尝试设置不同的post缓冲(在这里和那里都可以找到),但没有区别。。。
django 1.4 uwsgi 1.9.15 nginx 1.2.1
EDIT3:现在我尝试使用webob:(load request.environ)客户端在发送POST/PUT正文时断开了连接(预计还会有39个字节)
现在我手动尝试:打印请求。环境['wsgi.input']。读(39)-
Edit4:我尝试了在网上找到的任何提示,我正在考虑尝试fcgi或在runserver上部署它;(
编辑5:相关nginx。配置(已启用站点)部分:
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
location / {
root /var/www;
index index.html index.htm;
proxy_set_header X-FORWARDED-FOR $remote_addr;
include uwsgi_params;
uwsgi_pass_request_body on;
uwsgi_pass_request_headers on;
uwsgi_pass 127.0.0.1:8000;
}
uwsgi_参数:
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
uwsgi_param DOCUMENT_BODY $request_body;
编辑6:
这是我正在使用的应用程序(模块=):
import os,sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site.settings")
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__),
"../../")))
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__),
"../")))
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
尝试删除nginx以查看问题所在。在http模式下运行uWSGI:
http套接字=127.0。0.1:8000
并连接到端口8000
如果一切正常,请确保nginx正在传递CONTENT\u LENGTH参数
最终粘贴您的nginx配置
x=请求。身体
这应该是wsgi运行的任何django应用程序的第一行。然后发布数据。Django必须立即读取请求体,如果以后使用它的话。
但是,仍然存在这个问题:无效的uwsgi请求(当前标准:16705)。跳过
因此,我认为在这种情况下很难使用uwsgi。我通过使用fcgi解决了这个问题,fcgi没有这样的限制。
理由:strsize不可配置--http://comments.gmane.org/gmane.comp.python.wsgi.uwsgi.general/5712
编辑:Roberto是对的——strsize与请求的主体无关,甚至在uwsgi中也能工作。在旅行、夜间等期间调试问题并不总是一个好主意;)然而,Django必须立即阅读body请求,这是毫无疑问的。在执行任何其他操作之前,必须先阅读请求的正文。