这个问题围绕本站有一段时间,因为程序运行良好,只有退出时出现这个问题,一直以来以为是discuz自身的问题。如:https://bbs.swdyz.com/member.php?mod=logging&action=logout&formhash=72dea2a2 要把后面&formhash=72dea2a2去掉才正常显示,但用户仍然不能退出!6 m0 h9 k+ J0 ]: ]* w& Q" h1 I3 B' \
9 t: f% S8 x: t: d" d
. h; v3 ` d: V1 [& g1 p# q( L) P3 }7 n今天发誓解决的个问题,懒人终于查看了nginx的错误日志,里面显示:
$ x& V# U0 Y* C3 y y, ^% ?[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"
1 k) x$ G% n* u( \% S2 A' y2 g+ g4 c4 H- r& g9 F8 k
原因在这句:upstream sent too big header while reading response header from upstream* S) m2 Y% F& V
原来用户退出时发送的header过大,超出默认的1k。$ Q9 i# i! f% Y- r0 C. v* j1 L/ U
解决方法也就有了,在nginx网站php解析那部分加上以下代码问题解决:& X1 c. S6 l" N; @
fastcgi_buffers 8 16k;
$ B" B4 |) j5 E2 V4 Ffastcgi_buffer_size 32k;8 L5 x* H+ t4 H. o
/ w4 _8 r5 j; Q9 X1 U& W
3 G. L& n( j3 ~2 k9 q2 E4 n
如果你已经设置但还是有问题估计用了反向代理的原因,同样反向代理nginx配置文件php部分加上:) I& B( w6 p3 }( \+ k9 q
在http{}中加了如下代码,单个虚拟站点在location ~ \.php{}中加入:
7 b. Z1 [% B& x- `: e. E proxy_buffer_size 128k;
0 g* D4 ~6 b$ G4 F proxy_buffers 32 32k;
9 {. Y3 Y0 P5 R( i2 T* E& b4 F9 A proxy_busy_buffers_size 128k;
5 j* y7 C8 I0 \/ V" r2 ?$ ]: A9 p. `* v3 G, [; g
: I F7 i/ w& l' L% h! E
8 r+ U W7 U& s6 i% a* ` |