簡體   English   中英

Spring 引導和 Zuul 路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM