Solo 在线人数显示一直为 2 问题处理

闲来无事,记录一下昨天消灭的一个自己造成的BuG。

众所周知,Solo 有显示浏览量和当前在线人数的统计功能,但一般也不会去注意这些小细节,不知道从什么时候开始在线人数就一直显示为 2,这被有完美主义强迫症的我看到了还了得,必须把这个问题处理一下。

仔细一想,恍然大悟,不久前才刚刚处理了这个问题!!

同病相怜

在我的另一个小网站上,有一个上传APK获取应用信息的工具,是根据访问的 IP 对上传次数做了限制的,有一段时间限制一直不起作用,查看日志后发现,请求的 IP 一直都是 127.0.0.10:0:0:0:0:0:0:1 这两个地址,这不都是本机的地址吗?!所以这就一定是 Solo 在线人数一直显示为 2 的原因。

iApk-2017033012.21.33.jpg

都是 Nginx 惹的祸

因为我的 Solo 服务一直在用独立模式,还有一个 itanken.cn 的服务也在同一台服务器上,所以后来就用了 Nginx 做了反向代理,发现上传功能的 IP 限制失效并查看日志之后,感觉这一定就是 Nginx 惹的祸,所以机智的我立马就用度娘搜索了 用Nginx反向代理后获取不到真实IP,果不其然,需要在 Nginx 配置文件对应服务的 location / {} 中加上获取客户端真实 IP 地址的几个请求头的对应参数,在 Nginx 转发到的服务当中才可以获取到客户端请求的真实 IP,不然本机的 Nginx 转发到本机的 WEB 服务中,服务中获取到的 IP 只能是 Nginx 的 IP,就是那两个本机地址。配置参数:

  location / {
	# ...
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header REMOTE-HOST $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	# ...
  }

强迫症可能只是无聊的借口吧

这样在 Solo 对应的配置当中也加上这几条之后,重启 Nginx 之后 Solo 的在线人数果然就多了起来... 至少自己看着舒服一点,后悔当初自己为什么那么懒,不在每一个 server{} 中都加上这几条配置。话说强迫症有药吗 🤔 ? 有得治没...

标题:Solo 在线人数显示一直为 2 问题处理

作者:Tanken

来源:http://pipe.b3log.org/blogs/Tanken/articles/2017/03/30/1539738313661