ユーザーのIPアドレスを取得する方法

ユーザーの実際の IP アドレスを正確に取得できないように、プロキシ サーバー、VPN、その他のツールを使用するなどして、ユーザーの IP アドレスが隠蔽または変更される場合があります。
上記の特別な状況に加えて、一般に、ユーザー アクセスは次のリンクを経由する場合があります:
フロントエンド -> nginx -> ゲートウェイ -> サービス。通常、後者の 3 つが取得する IP アドレスは、前の 3 つの IP アドレスのみになります (たとえば、ゲートウェイは nginx の IP アドレスしか取得できません)。したがって、一般に、フロントエンドからユーザー IP を取得し、それをヘッダー経由で渡す必要があります。
nginxの設定

server {
    
    
    listen 80; #访问端口
    server_name your_domain.com; #访问域名

    location / {
    
    
        proxy_pass http://your_backend;  # nginx能访问的后端网关地址
        proxy_set_header X-Real-IP $remote_addr;  # 设置请求头中的 X-Real-IP 字段为用户真实 IP 地址

    }
}

ゲートウェイ構成のグローバル インターセプターは GlobalFilter pass ip を実装します

        ServerHttpRequest request = exchange.getRequest().mutate().
                header(CommonConstants.REAL_IP,exchange.getRequest().getRemoteAddress().getHostString()).build();

サービスで得られるもの

        /**
         * HttpServletRequest在微服务中通过获取请求头从而获取到真实的客户端IP
         */
        String ip = request.getHeader(CommonConstants.REAL_IP);

おすすめ

転載: blog.csdn.net/qq_56533553/article/details/132634718