这个问题围绕本站有一段时间,因为程序运行良好,只有退出时出现这个问题,一直以来以为是discuz自身的问题。如:http://bbs.swdyz.com/member.php?mod=logging&action=logout&formhash=72dea2a2 要把后面&formhash=72dea2a2去掉才正常显示,但用户仍然不能退出!9 S1 I2 e8 M8 I6 i* P% J
[+ q( L# q7 ?: @& b' a: Z* T, `4 p& O: R; e
今天发誓解决的个问题,懒人终于查看了nginx的错误日志,里面显示:
9 i7 L+ c Q! h& C[C#] 纯文本查看 复制代码 2014/08/07 08:44:17 [error] 1681#0: *49837 upstream sent too big header while reading response header from upstream, client: 218.65.212.158, server: bbs.swdyz.com, request: "GET /member.php?mod=logging&action=logout&formhash=72dea2a2 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9009", host: "bbs.swdyz.com", referrer: "http://bbs.swdyz.com/home.php?mod=space&uid=1&do=profile"
. N6 R6 D4 _$ [5 H) Z
' ~; g' r) }1 R' L! g
原因在这句:upstream sent too big header while reading response header from upstream
2 E! S C, j0 b0 u" ]原来用户退出时发送的header过大,超出默认的1k。: x$ s8 ~ A0 L
解决方法也就有了,在nginx网站php解析那部分加上以下代码问题解决:
# F( ?3 ~8 v7 ifastcgi_buffers 8 16k;
; ?; ? d% S# Sfastcgi_buffer_size 32k;+ A1 r3 m. D' H% Q4 P- a9 K5 r$ H# l. V
: d3 M1 U3 _- g9 q( Y4 |
# D7 w# f4 L5 b! ^ A# w7 C如果你已经设置但还是有问题估计用了反向代理的原因,同样反向代理nginx配置文件php部分加上:. G) {+ J% Z* f$ Q2 q5 U: G% s
在http{}中加了如下代码,单个虚拟站点在location ~ \.php{}中加入:) z1 W5 F4 J3 \+ s
proxy_buffer_size 128k;
6 n! m% U3 z+ M2 P- I; F- o4 ? proxy_buffers 32 32k;9 M+ H$ ^, V9 \4 o6 A# r
proxy_busy_buffers_size 128k;
9 h) b9 C) }3 q- g/ B. h" n+ W+ B9 r. a/ R" q; U& A R5 q7 U
4 w9 C" P0 n( z) U% F6 g0 s3 [9 I7 j, Y* \! P5 ^! @
|