Nginx环境使用CDN后获取用户真实IP

avatar
avatar
自然
550
文章
472
评论
2019年5月11日23:26:02 1 834字阅读2分46秒

近期自然开始弃用wordpress的缓存插件改用CDN进行网站加速了,自然使用的是上海云盾提供的免费CDN服务,在为网站加速的同时还隐藏了服务器的真实IP,综合而言效果很不错还配备了WAF应用防火墙,初始宽带是5Mbps,后期应该会有所增加。

Nginx环境使用CDN后获取用户真实IP

大部分CDN都是使用反向代理的原理进行网站加速,这就产生了一个严重的问题。CDN节点不仅代理了服务器IP,还代理了用户IP。以至于造成用户端认为CDN ip是服务器IP,反之,服务器就会认为CDN ip是用户端的IP。这种IP颠倒的结果对于运维而言是致命的,因为你不知道是谁访问了你的服务器,因为全部时CDN节点ip。

Nginx环境使用CDN后获取用户真实IP

通过网上查阅资料,自然找到了一个办法,那就是自定义一个日志格式。

首先,将下面的代码添加到nginx.conf文件的http{后面让日志重置化:

  1. #自定义一个日志格式
  2. log_format cdn '$http_x_forwarded_for - $remote_user [$time_local] '
  3.                     '"$request$status $body_bytes_sent '
  4.                     '"$http_referer" "$http_user_agent"';

然后,我们修改nginx站点原来的日志输出格式,修改access_log /home/wwwlogs/xxxx.log; 为access_log /home/wwwlogs/xxxx.log cdn;

全部保存之后不要急着重启nginx,再次强调一个命令nginx -t,用于检查nginx配置文件是否存在错误。这是一个非常实用的命令,可以让你在业务运行的同时从起nginx服务,不至于造成业务中断或者业务停止。

执行后输出successful,那么表示nginx不存在错误,我们继续执行lnmp nginx restart重启nginx服务即可。

到这里我们再去查看网站日志,记录的就是用户真实IP了。

Nginx环境使用CDN后获取用户真实IP

weinxin
自然博客
快来关注一下,一个linux运维爱好者的个人博客!
Nginx最后更新:2019-5-15
avatar
  • 本文由 发表于 2019年5月11日23:26:02
AlphaSSL 域名通配符型DV SSL证书
全网通流量卡/物联卡 SIM专用上网卡
解决nginx反向代理proxy不能转发header报头 Nginx

解决nginx反向代理proxy不能转发header报头

做了一个德国高防plesk卖虚拟主机,奈何地理位置太过于遥远,控制台使用上速度难以接受。用户站点可以使用cloudflare等等的加速手段,控制台能否也这么干呢?理论是完全可以的,那么时间上手看吧。安...
centos7搭建yum仓库/源 Linux

centos7搭建yum仓库/源

我们一般情况下yum源都是用一些公共的yum源服务器,比较常见公共yum服务器的有阿里云、163、搜狐、中科院等。日常生产中自然使用最多的就是阿里云的镜像服务mirrors.aliyun.com,但是...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  0   博主  0
    • avatar 知识共享网 0

      谢谢分享