这个问题围绕本站有一段时间,因为程序运行良好,只有退出时出现这个问题,一直以来以为是discuz自身的问题。如:https://bbs.swdyz.com/member.php?mod=logging&action=logout&formhash=72dea2a2 要把后面&formhash=72dea2a2去掉才正常显示,但用户仍然不能退出!
9 M/ V, ~" C* o, |" |) Y7 \% {1 m2 b0 z7 l0 Q( e' F9 A
' x7 p8 h q+ l _/ z3 e) Y5 p今天发誓解决的个问题,懒人终于查看了nginx的错误日志,里面显示:
" ?( E0 t& f( |0 x$ S[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: "https://bbs.swdyz.com/home.php?mod=space&uid=1&do=profile"
5 I8 P/ Z+ t- Z/ u. j' g2 B: @
" J) h3 T( ^ T7 m原因在这句:upstream sent too big header while reading response header from upstream
% `- k `+ D/ F9 i$ k. x; X, t原来用户退出时发送的header过大,超出默认的1k。/ \# o7 t: z. h2 A) I4 L- ^
解决方法也就有了,在nginx网站php解析那部分加上以下代码问题解决:
: J' B3 k( s8 V" T! A: ffastcgi_buffers 8 16k; ! V$ ?- k4 y: f4 |% v, }8 Y
fastcgi_buffer_size 32k;) ~7 @8 U: C& i# x
% t* U; q4 }3 s) q4 p4 N, W
' P* c+ F* g- p( M) r/ f$ p
如果你已经设置但还是有问题估计用了反向代理的原因,同样反向代理nginx配置文件php部分加上:
" ~2 P- X n0 i$ U9 G# ~6 }+ z/ k在http{}中加了如下代码,单个虚拟站点在location ~ \.php{}中加入:
& P- v2 r! l& o! u: N/ u proxy_buffer_size 128k;& i6 J7 G) I7 `3 R( z
proxy_buffers 32 32k;
! f$ c" K1 @" R) Y proxy_busy_buffers_size 128k;# k! E1 w- o9 H0 R5 l& |0 f
# a* C- W5 J9 Q
& q# p8 d- g; G3 Z
) Q6 q/ z( t; L3 g
|