Browse Source

Merge remote-tracking branch 'origin/master'

Aslee 4 năm trước cách đây
mục cha
commit
7e71b312db
1 tập tin đã thay đổi với 9 bổ sung4 xóa
  1. 9 4
      src/main/java/com/caimei/config/WebConfiguration.java

+ 9 - 4
src/main/java/com/caimei/config/WebConfiguration.java

@@ -1,5 +1,6 @@
 package com.caimei.config;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.stereotype.Component;
@@ -37,12 +38,16 @@ public class WebConfiguration implements WebFluxConfigurer {
      */
     @Component
     public static class RetrieveClientIpWebFilter implements WebFilter {
-
         @Override
         public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
-            InetSocketAddress remoteAddress = exchange.getRequest().getRemoteAddress();
-            String clientIp = Objects.requireNonNull(remoteAddress).getAddress().getHostAddress();
-            ServerHttpRequest mutatedServerHttpRequest = exchange.getRequest().mutate().header("X-CLIENT-IP", clientIp).build();
+            ServerHttpRequest request = exchange.getRequest();
+            // 从我们的 nginx 重写请求获取的参数,X-Real-IP是在nginx中配置的,要对应上;
+            String clientIp = request.getHeaders().getFirst("X-Real-IP");
+            if (StringUtils.isEmpty(clientIp)) {
+                InetSocketAddress remoteAddress = request.getRemoteAddress();
+                clientIp = Objects.requireNonNull(remoteAddress).getAddress().getHostAddress();
+            }
+            ServerHttpRequest mutatedServerHttpRequest = request.mutate().header("X-CLIENT-IP", clientIp).build();
             ServerWebExchange mutatedServerWebExchange = exchange.mutate().request(mutatedServerHttpRequest).build();
             return chain.filter(mutatedServerWebExchange);
         }