路由网关 nginx 是一款强大的反向代理服务器
zuul也具有路由的功能,适合在微服务中一些场景下使用,可以在路由前进行过滤,判断是否进行路由,在前后端分离项目中可以
用做 服务负载均衡的调用器,和对html页面进行权限验证放行 .js,.css 等资源文件
自定义zuul过滤器
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
public class CoreFilter extends ZuulFilter {
@Override
public boolean shouldFilter() {
// TODO Auto-generated method stub
RequestContext ctx= RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
String requestUrl = request.getRequestURL().toString();
//是否需要执行过滤,即执行run()
return !requestUrl.contains("login.html")&&!requestUrl.contains(".js")&&!requestUrl.contains(".css")&&!requestUrl.contains(".img");
}
@Override
public Object run() throws ZuulException {
// TODO Auto-generated method stub
RequestContext ctx= RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
HttpServletResponse response = ctx.getResponse();
/*HttpSession session = request.getSession();
session.getAttribute("key");
response.addHeader("token", "123456");*/
try {
//跳转登入页面
response.sendRedirect("http://127.0.0.1:9001/pretty-client/login.html");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
public String filterType() {
// TODO Auto-generated method stub
return PRE_TYPE;
}
@Override
public int filterOrder() {
// TODO Auto-generated method stub
return PRE_DECORATION_FILTER_ORDER;
}
}
appliction.xml添加配置,serviceId 服务调用,url 路由到其他id地址
#路由分发
zuul:
strip-prefix: true
routes:
pretty-security-serviceId:
path: /pretty-security-serviceId/** #默认时转发到服务的请求是/**,如果stripPrefix=false,转发的请求是/pretty-security-serviceId/**
serviceId: pretty-security
pretty-security-url:
path: /pretty-security-url/**
url: http://127.0.0.1:9000/