Nginx IP 透传配置及 Java 获取请求 IP 代码
Nginx IP 透传配置及 Java 获取请求 IP 代码
要配置 Nginx 以透传 IP 地址,您需要进行以下步骤:
- 在 Nginx 配置文件中,找到您要配置的代理服务器块。
- 在该块中,添加下面的配置:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- 保存并重新加载 Nginx 配置。
这样配置后,Nginx 会将客户端的真实 IP 地址透传给后端服务器。
在 Java 中获取请求的 IP 地址,您可以使用以下代码:
public String getClientIp(HttpServletRequest request) {
String ipAddress = request.getHeader('X-Forwarded-For');
if (ipAddress == null || ipAddress.length() == 0 || 'unknown'.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader('Proxy-Client-IP');
}
if (ipAddress == null || ipAddress.length() == 0 || 'unknown'.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader('WL-Proxy-Client-IP');
}
if (ipAddress == null || ipAddress.length() == 0 || 'unknown'.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader('HTTP_CLIENT_IP');
}
if (ipAddress == null || ipAddress.length() == 0 || 'unknown'.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader('HTTP_X_FORWARDED_FOR');
}
if (ipAddress == null || ipAddress.length() == 0 || 'unknown'.equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
}
return ipAddress;
}
以上代码会尝试从请求头中获取客户端的真实 IP 地址,如果不可用,则返回请求的远程地址。您可以将getClientIp方法用于处理 HTTP 请求的HttpServletRequest对象,以获取请求的 IP 地址。
原文地址: https://www.cveoy.top/t/topic/pgtY 著作权归作者所有。请勿转载和采集!