Kon*_*nov 7 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();
}
}
Run Code Online (Sandbox Code Playgroud)
前置过滤器:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
和属性:
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
Run Code Online (Sandbox Code Playgroud)
一般来说,一切正常。
但是代理发送的网页有这样的链接
href="http://localhost:80/myserver/api/item"
Run Code Online (Sandbox Code Playgroud)
A 必须是这样的形式:
href="http://server_ip:3000/myserver/api/item"
Run Code Online (Sandbox Code Playgroud)
如何配置服务器以发送正确的链接?
案例:
1.当直接从 Internet 访问 myserver 时,例如:
http://server_ip:80/myserver/api/item
Run Code Online (Sandbox Code Playgroud)
服务器发送带有以下链接的页面:
href="http://server_ip:80/myserver/api/item"
Run Code Online (Sandbox Code Playgroud)
2.从Internet访问代理时,例如:
http://server_ip:3000/myserver/api/item
Run Code Online (Sandbox Code Playgroud)
代理服务器发送带有以下链接的页面:
href="http://localhost:80/myserver/api/item"
Run Code Online (Sandbox Code Playgroud)
了解并尝试不同的选择。
解决问题所需的只是添加到设置中:
.properties
......
zuul.add-host-header = true
......
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
241 次 |
| 最近记录: |