hjk431591 发表于 2014-12-16 11:32:29

Nginx+Discuz无法登陆后台解决办法

Nginx+Discuz无法登陆后台解决办法
                                                                      由于性能问题,将Web server从Apache切换成Nginx,通过修改rewrite规则后,网站工作正常,但是却无法登陆后台,切换成Apache就完全正常。
经过咨询“有颜色的猫”,小猫提及了几点:1、IPv6地址问题,2、Discuz自己实现的Session,后台登陆的时候会检查用户的IP地址是否和Session里面的IP地址一致。沿着小猫同志的方向,最终解决后台登陆问题。
由于该服务器上部分网站需要支持IPv6访问,于是Nginx必须监听IPv6端口,此时,Nginx识别IPv4地址为:::ffff:192.168.129.48,在地址前面增加:::ffff: ,了解IPv6的都知道这是什么意思,但是Discuz却识别不了这个IP地址。
Discuz是这么保存地址的,如果用户的IP地址是:192.168.129.48,Discuz用4个字段来保存这个IP地址,分别为:ip1 ip2 ip3 ip4,他们的值分别为:192 168 129 48。
解决办法:
让Nginx告诉fastcgi用户的IP地址为标准的IPv4地址即可。
修改fastcgi.conf文件的内容,增加:

1
2
3
4
5
6
7
8
# remove ^::ffff: for IPv4 Address.
set $remote_addr_new $remote_addr;
if ($remote_addr ~* ^::ffff:(.*))
{
set $remote_addr_new $1;
}

fastcgi_paramREMOTE_ADDR      $remote_addr_new;





页: [1]
查看完整版本: Nginx+Discuz无法登陆后台解决办法