这个问题围绕本站有一段时间,因为程序运行良好,只有退出时出现这个问题,一直以来以为是discuz自身的问题。如:http://bbs.swdyz.com/member.php?mod=logging&action=logout&formhash=72dea2a2 要把后面&formhash=72dea2a2去掉才正常显示,但用户仍然不能退出!9 D {& g2 n% t) t( F
+ o2 X% ?0 a' G- U. M
3 o9 j& g" E0 @7 b
今天发誓解决的个问题,懒人终于查看了nginx的错误日志,里面显示:
2 u- K O2 `, D( k- 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"
1 h8 _+ w, A, o0 F" s
/ b- R0 X1 I6 I% H6 W/ S( c原因在这句:upstream sent too big header while reading response header from upstream1 I( K9 I7 q: c6 b
原来用户退出时发送的header过大,超出默认的1k。/ w# H' p( c" ]- I; e" x( ]! p8 e& ?
解决方法也就有了,在nginx网站php解析那部分加上以下代码问题解决:" o& k# ]# N5 P! j' p& Q
fastcgi_buffers 8 16k;
9 @5 r1 _8 r! V" l! S8 U" rfastcgi_buffer_size 32k;
" G" w: {5 U3 E3 z4 I
$ C* p: O9 s$ g! m5 H3 c5 b I; C" F
如果你已经设置但还是有问题估计用了反向代理的原因,同样反向代理nginx配置文件php部分加上:
5 G5 V1 Z3 l* s在http{}中加了如下代码,单个虚拟站点在location ~ \.php{}中加入:
: v% b6 F; R5 L' Z3 b proxy_buffer_size 128k;
' A( M% r& \9 J ^+ h/ l proxy_buffers 32 32k;9 R, S6 @* L, z6 p$ @, }8 Q6 R
proxy_busy_buffers_size 128k;% c% g3 s# u/ r! U2 @, w* S# ^
( Y2 Y( Q4 ~! k: E! l! b+ s% j
5 a0 ]6 k3 a! @- v* {+ L6 @+ b
|