现如今,微服务项目异常火爆,在系统开发过程中微服务在获取客户端ip的时候如何获取真实的ip地址呢?
下面分享一种通过修改请求头的方式把客户端ip传递到Next Service
1、在zuul网关项目中增加一个filter,代码如下
import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.RequestContext;import javax.servlet.http.HttpServletRequest;import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;import org.springframework.stereotype.Component;@Componentpublic class ForwardedForFilter extends ZuulFilter { private static final String HTTP_X_FORWARDED_FOR = "HTTP_X_FORWARDED_FOR"; public static final String UNKNOWN_CHAR = "unknown"; @Override public Object run() { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); String remoteAddr = getIpAddress(request); ctx.getZuulRequestHeaders().put(HTTP_X_FORWARDED_FOR, remoteAddr); return null; } @Override public boolean shouldFi