[英]Spring Boot and Zuul routes
有一個簡單的代理:
@EnableZuulProxy
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public SimpleFilter simpleFilter(){
return new SimpleFilter();
}
}
前置過濾器:
public class SimpleFilter extends ZuulFilter {
private static Logger log = LoggerFactory.getLogger(SimpleFilter.class);
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
log.info(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString()));
return null;
}
}
和屬性:
zuul.ignored-patterns=/myserver/web/**
zuul.routes.myserver.path=/myserver/api/**
zuul.routes.myserver.url=http://localhost:80/myserver/api
zuul.routes.myserver.sensitiveHeaders = Cookie,Set-Cookie
server.port=3000
一般來說,一切正常。
但是代理發送的 web 頁面具有如下鏈接
href="http://localhost:80/myserver/api/item"
A 必須是如下形式:
href="http://server_ip:3000/myserver/api/item"
如何配置服務器以發送正確的鏈接?
案例:
1.直接從Internet訪問myserver時如:
http://server_ip:80/myserver/api/item
服務器發送帶有以下鏈接的頁面:
href="http://server_ip:80/myserver/api/item"
2.當從 Internet 訪問代理時,例如:
http://server_ip:3000/myserver/api/item
代理服務器發送帶有以下鏈接的頁面:
href="http://localhost:80/myserver/api/item"
了解並嘗試了不同的選擇。
解決問題所需的只是添加到設置中:
。特性
......
zuul.add-host-header = true
......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.