Nginx/Apache/Tomcat记录屏蔽真实IP

本文详细介绍了在Nginx、Apache、Tomcat及PHP环境下记录客户端真实IP的方法,并提供了如何屏蔽特定源地址的配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录客户端真实IP
#Nginx示例
log_format  upstream  '$time_iso8601 $http_x_forwarded_for $host $upstream_response_time $request $status $upstream_addr';

#Apache示例
SetEnvIf REMOTE_ADDR "(.+)" CLIENTIP=$1
SetEnvIf X-Forwarded-For "^([0-9.]+)" CLIENTIP=$1
LogFormat "%{CLIENTIP}e %D %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" trueip_combined

Nginx/Apache/Tomcat记录屏蔽真实IP

#PHP示例
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader(" X-Forwarded-For ");
if (ip == null || ip.length() == 0 || " unknown ".equalsIgnoreCase(ip)) {
ip = request.getHeader(" Proxy-Client-IP ");
}
if (ip == null || ip.length() == 0 || " unknown ".equalsIgnoreCase(ip)) {
ip = request.getHeader(" WL-Proxy-Client-IP ");
}
if (ip == null || ip.length() == 0 || " unknown ".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}


屏蔽客户端真实IP

配置Apache屏蔽某源地址

参考下面的内容修改配置文件:

Order deny, allow

SetEnvIf X-Forwarded-For "^(192\.168\.0\.1)$" deny1
SetEnvIf X-Forwarded-For "^(172\.16\.0\.1)$" deny2
Deny from env=deny1
Deny from env=deny2

“Order deny, allow”的顺序可以根据使用方式自定义。 “SetEnvIf”用来定义一个环境变量。这里将”X-Forwarded-For”字段作为一个变量,并使用了一个正则表达式匹配某IP(192.168.0.1)。 后续的Deny将根据该变量将所匹配IP进行屏蔽。

配置Nginx屏蔽某源地址

参考下面的内容修改配置文件:

set_real_ip_from  10.10.251.0/24;

real_ip_header X-Forwarded-For;
deny 192.168.0.1;

其中”set_real_ip_from”资源的”10.10.251.0/24”IP地址为UCloud北京BGP-C机房的ULB所在网段地址。 nginx会将来源为该网段的”X-Forwarded-For”作为真实IP地址。 deny后面的IP,既为所需要屏蔽的IP地址。


转载于:https://www.cnblogs.com/lixuebin/p/10814390.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值