VPS启用IPV6支持后discuz无法登录后台

昨天给vps配置了IPV6地址,今天早上发现discuz后台不能进入了,到discuz官网搜索,到也有类似问题,但是大都是要改文件清缓存之类。我以前没改文件没清缓存也好好的,应该不是这个问题。回想昨天做的事,中午还登录后台添加了版主,下午设置了ipv6,今天就不能进后台了,看来和ipv6有关系。
百度了下 “vps启用ipv6地址后discuz x2.5后台突然无法登陆”,找到一篇文章:

由于性能问题,将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文件的内容,增加:

# remove ^::ffff: for IPv4 Address.
set $remote_addr_new $remote_addr;
if ($remote_addr ~* ^::ffff:(.*))
{
 set $remote_addr_new $1;
}
 
fastcgi_param  REMOTE_ADDR        $remote_addr_new;
文章引自:http://www.wenzk.com/archives/1239

5 thoughts on “VPS启用IPV6支持后discuz无法登录后台

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注