Nginx IP 透传配置及 Java 获取请求 IP 代码

要配置 Nginx 以透传 IP 地址,您需要进行以下步骤:

  1. 在 Nginx 配置文件中,找到您要配置的代理服务器块。
  2. 在该块中,添加下面的配置:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  1. 保存并重新加载 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 地址。

Nginx IP 透传配置及 Java 获取请求 IP 代码

原文地址: https://www.cveoy.top/t/topic/pgtY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录