这个问题围绕本站有一段时间,因为程序运行良好,只有退出时出现这个问题,一直以来以为是discuz自身的问题。如:https://bbs.swdyz.com/member.php?mod=logging&action=logout&formhash=72dea2a2 要把后面&formhash=72dea2a2去掉才正常显示,但用户仍然不能退出!% `8 @8 X O0 n
y" E6 o" ^( G# p+ i4 Z
4 F z, H# m5 G% H今天发誓解决的个问题,懒人终于查看了nginx的错误日志,里面显示:+ T9 j- G8 Z: e0 p$ i( f1 p
[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"
2 v* p/ z1 S/ D+ G+ k @8 C5 A* \1 S8 _8 q% f
原因在这句:upstream sent too big header while reading response header from upstream* _6 X8 e6 r& u
原来用户退出时发送的header过大,超出默认的1k。
- c. `6 L; Y( j" n m解决方法也就有了,在nginx网站php解析那部分加上以下代码问题解决:
7 p3 o6 d+ }2 m/ I- @/ H' {fastcgi_buffers 8 16k; * {8 O# m% C, d! P% q( y# b
fastcgi_buffer_size 32k;
' e7 Q5 P; i; F' P1 g2 C2 {+ A
% X: ]4 T! @9 W1 P5 s3 Y0 Y$ g; h! v$ m% ?1 q) W( H
如果你已经设置但还是有问题估计用了反向代理的原因,同样反向代理nginx配置文件php部分加上:
# w6 f6 d/ _- g$ M在http{}中加了如下代码,单个虚拟站点在location ~ \.php{}中加入:
1 V+ ?$ r6 k+ J! Z proxy_buffer_size 128k;: t* J! G) p3 u- B2 V( J
proxy_buffers 32 32k;
' [# i2 z0 }. ?3 } proxy_busy_buffers_size 128k;( f) v: o1 s- t/ o1 m4 ?) C
. u! ]3 t8 w# R$ P
0 f( N" k! Z: h7 ^; d8 d
: x6 A; ]! t( i" l |