java - Spring Boot 和 Zuul 路由

标签 java spring spring-boot netflix-zuul

有一个简单的代理:

@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
一般来说,一切正常。
但是代理发送的网页有这样的链接
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 
......

关于java - Spring Boot 和 Zuul 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62731984/

相关文章:

java - SseEmitter 和 jackson 没有适合类 java.lang.String 的转换器

java - Controller 在一种环境中接受 null 作为请求主体,但在另一种环境中拒绝

spring-boot - 在 doOnSubscribe、doOnSuccess 和 doOnError 中获取 Reactor 订阅者上下文

java - Spring Boot连接Mongodb Atlas问题

java - 从 IgniteCache 获取 key

java - Axis 故障 : The ServiceClass object does not implement the required method in the following form: OMElement add(OMElement e)

java - 如何将具有不同空格量的字符串分成两部分?

Java 字符串乘以 2 个整数

java - 仅加热 URI,不等待 Spring Rest 中的响应

postgresql - 如何使用 spring-data-jdbc 读/写 postgres jsonb 类型?