Ver código fonte

gateway 中添加对 X-Real-Remote header 的获取, 此 header 由 nignx 添加, 实际对应的是 proxy_protocol_addr, 这由 proxy protocol 协议提供, 通过外网访问隐藏的内网中的服务时, 提供真实的外网 IP

reghao 7 meses atrás
pai
commit
0e89e79f7d

+ 10 - 1
gateway/src/main/java/cn/reghao/tnb/gateway/log/GatewayLogService.java

@@ -79,10 +79,19 @@ public class GatewayLogService {
         String requestTimeStr = headers.get("x-request-time").get(0);
         long requestTime = Long.parseLong(requestTimeStr);
         gatewayLog.setRequestTime(requestTime);
+        String realRemoteAddr = "";
+        if (headers.get("X-Real-Remote") != null && !headers.get("X-Real-Remote").isEmpty()) {
+            realRemoteAddr = headers.get("X-Real-Remote").get(0);
+        }
 
         InetSocketAddress remote = exchange.getRequest().getRemoteAddress();
         if (remote != null) {
-            gatewayLog.setRemoteAddr(remote.getHostString());
+            if (!realRemoteAddr.isBlank()) {
+                gatewayLog.setRemoteAddr(realRemoteAddr);
+            } else {
+                gatewayLog.setRemoteAddr(remote.getHostString());
+            }
+            //gatewayLog.setRemoteAddr(remote.getHostString());
             gatewayLog.setRemotePort(remote.getPort());
         }
     }