有这么一情况,某网站静态文件很多,而且用户访问的来源有网通,有电信,有铁通...设置还有国外。
为了令处于不同网络运营商的用户收取静态文件的速度都有良好的体现,该网站分别在这些不同运营商的积分中部署了Squid,然后统一 Proxy 到主站的 Nginx 上,形成分布式缓存架构。
如果单是这样的话,主站上 Nginx 的日志,或者应用所获得的IP来源,始终都只会是各个机房中 Squid 的IP。而不是用户的真实IP。Apache 的话,能通过以上所提到的mod_rpaf解决。当然,强大的 Nginx 也有自己的看家法宝。
Nginx 有个在编译时默认不加载的模块 http_realip_module ,就是用来实现这一功能。
但网上很多作者对这一模块的理解完全错误,以为是 Proxy 参数里头的 proxy_set_header 。