我有一个使用 Pinax 开发的 Django 站点。当我在 apache+mod_wsgi 中部署它时,它工作正常。但是当我在 nginx+uwsgi 中部署它时,它几乎可以正常工作,但是页面包含一个{% csrf_token %}
标签。崩溃的页面不会显示 Django 错误页面,而是显示 Nginx 502 错误页面。Nginx 错误日志是:
2012/06/08 09:11:59 [错误] 30224#0: *79 上游从上游读取响应标头时发送了无效标头,客户端:211.142.12.3,服务器:mysite.com,请求:“GET /discuss/ HTTP /1.1”,上游:“uwsgi://127.0.0.1:9001”,主机:“mysite.com”,引用者:“http://mysite.com/”
uwsgi 显示:
{地址空间使用:42319872 字节/40MB} {rss 使用:22573056 字节/21MB} [pid: 21398|app: 0|req: 1/3] 110.178.82.221 () {42 vars in 988 bytes} [Fri Jun 8 18:27:01 2012] GET /discuss/ => 在 2306 毫秒内生成 31139 个字节(HTTP/1.1 200) 358 个字节中的 5 个标头(1 个在核心 0 上切换)
错误发生在 GET 请求上,而不是 POST 请求上。我对此进行了测试-当我csrf_token
从模板中删除令牌时,就可以了。因此,令牌和错误之间必须存在关系,而不是其他任何东西。
这是怎么回事?