如何在服务器获取用户真实IP?

最近更新时间:2019-11-13 15:38:42

使用高防IP后,网站服务器访问日志中的IP地址都将记录为高防的IP地址,无法取得客户端的真实IP地址。

网站业务获取用户真实IP

在高防IP转发的HTTP头信息中增加 header头信息,这时web服务器的日志就可以记录远程客户端的真实IP。

Nginx格式如下:

'$http_x_forwarded_for - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer"' '"$http_user_agent" ';

Apache格式如下:

LogFormat "%{X-FORWARDED_FOR}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

—— ASP

Request.ServerVariables("X_FORWARDED_FOR")

——PHP

$_SERVER["HTTP_X_FORWARDED_FOR"]

——JSP

request.getHeader("X_FORWARDED_FOR")

非网站业务获取用户真实IP

以下方法支持操作系统为 CentOS 或 Fedora 的源站服务器获取真实访问IP,其他操作系统请联系技术支持确认

1.uname -r 查看主机内核版本

图片.png

2.下载内核对应的rpm包

2.6.32_358

2.6.32_504

2.6.32_696

3.10.0_229

3.10.0_327

3.10.0_514

3.10.0_693

  1. 安装rpm包

图片.png

若您的内核版本不在以上列表中,可通过源码编译安装,Centos安装步骤参考如下(其他操作系统请联系售后技术人员):

第一步,查看系统内核版本

例如内核版本为3.10.0-957.1.3.el7.x86_64

 # uname -r 
 # 3.10.0-957.1.3.el7.x86_64

第二步,下载对应的内核RPM包

下载centosrpm包,从中找到对应内核版本的RPM

如未找到可从centos官方获取 https://wiki.centos.org/HowTos/I_need_the_Kernel_Source

# rpm -ivh kernel-devel-3.10.0-327.el7.x86_64.rpm

第三步,安装依赖环境

# sudo yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto
$ sudo yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel gcc
$ sudo yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel

第四步,编译&安装TTM模块

下载ttm源码

# unzip centos-kgwttm_v4.zip
# cd kgwttm
# ./build.sh 
# rpm -ivh *.rpm
# sh /usr/local/bin/kgwttm-insmod.sh
# lsmod |grep kgwttm

金山云,开启您的云计算之旅

注册有礼