现在大部分的网站会选择使用Nginx来搭建,而保护网站和缓解服务器的压力,绝大部分的站长都会选择套一个CDN。
但是套上CDN之后我们在网站的日志中只能看到CDN服务器的IP,却看不到用户的IP。
我们只需要修改Nignx的配置文件,修改日志记录方式就可以获得用户的IP。
修改Nginx获取真实IP地址(CloudFlare)
首先我们要修改Nginx的配置文件,
一般自编译LNMP的nginx的配置文件位置在:
/usr/local/nginx/conf/nginx.conf
宝塔面板安装LNMP存放nginx配置文件位置在:
/www/server/nginx/conf/nginx.conf
以宝塔面板为例,进入Ngnx设置,修改配置
在配置文件的
1 2 3 |
http { } |
中,插入(main 可以修改成自己喜欢的名字)
1 2 3 |
log_format main '$http_x_forwarded_for [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '$http_user_agent $remote_addr $request_time'; |
然后在到网站的Nginx配置中修改日志记录方式:
1 |
access_log /www/wwwlogs/yygt.online.log; |
修改成
1 |
access_log /www/wwwlogs/yygt.online.log main; |
如图所示:
保存好。 再打开你套了CDN的网站随便浏览几个页面,提交一下。再回来看网站日志,就可以发现日志里面记录的IP已经变回了真实IP。
参数 | 说明 | 示例 |
$remote_addr | 客户端地址 | 11.28.65.253 |
$remote_user | 客户端用户名称 | -- |
$time_local | 访问时间和时区 | 18/Jul/2012:17:00:01 +0800 |
$request | 请求的URI和HTTP协议 | "GET /article-10000.html HTTP/1.1" |
$http_host | 请求地址,来源(IP或域名) | 192.168.100.100 |
$status | HTTP请求状态 | 200 |
$upstream_status | upstream状态 | 200 |
$body_bytes_sent | 发送给客户端文件内容大小 | 1547 |
$http_referer | url跳转来源 | https://www.yygt.online |
$http_user_agent | 用户终端浏览器等信息 | "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; |
$ssl_protocol | SSL协议版本 | TLSv1.2 |
$ssl_cipher | 交换数据中的算法 | RC4-SHA |
$upstream_addr | 后台upstream的地址, | 100.10.10.1:80 |
$request_time | 整个请求的总时间 | 0.205 |
$upstream_response_time | 请求过程中,upstream响应时间 | 0.002 |
文章评论