上一篇【第86篇】Netty HTTP/2支持——多路复用的Web未来下一篇【第88篇】Netty DNS解析——自定义域名解析的底层实现一、Proxy Protocol vs X-Forwarded-For方式位置格式可靠性X-Forwarded-ForHTTP头文本低可伪造Proxy ProtocolTCP数据前二进制高二、Proxy Protocol格式v1文本: PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r\n ↑客户端IP ↑服务端IP ↑客户端端口 ↑服务端端口 v2二进制: 12字节签名 16字节IPv4或36字节IPv6地址三、Netty集成// Pipeline中添加HAProxyMessageDecoderch.pipeline().addFirst(newHAProxyMessageDecoder());// 处理HAProxy消息publicclassProxyHandlerextendsChannelInboundHandlerAdapter{publicvoidchannelRead(ChannelHandlerContextctx,Objectmsg){if(msginstanceofHAProxyMessage){HAProxyMessageproxyMsg(HAProxyMessage)msg;StringrealIPproxyMsg.sourceAddress();// 真实IPctx.channel().attr(REAL_IP_KEY).set(realIP);// 继续处理后续数据}else{// 业务数据StringrealIPctx.channel().attr(REAL_IP_KEY).get();process(ctx,realIP,msg);}}}四、Nginx配置# nginx.conf stream { server { listen 443; proxy_pass backend:8443; proxy_protocol on; # 发送Proxy Protocol } }上一篇【第86篇】Netty HTTP/2支持——多路复用的Web未来下一篇【第88篇】Netty DNS解析——自定义域名解析的底层实现