Java 通过littleproxy创建反向代理
我是littleproxy的初学者,如何创建反向代理服务器 我的代理从客户端获取请求并将其发送到服务器(服务器仅限于与www.xxx.com相同的常规站点,仅包含网页(在非rest中),代理从服务器获取响应(网页)并返回到客户端 例如,客户端url是Java 通过littleproxy创建反向代理,java,filter,proxy,little-proxy,Java,Filter,Proxy,Little Proxy,我是littleproxy的初学者,如何创建反向代理服务器 我的代理从客户端获取请求并将其发送到服务器(服务器仅限于与www.xxx.com相同的常规站点,仅包含网页(在非rest中),代理从服务器获取响应(网页)并返回到客户端 例如,客户端url是localhost:8080/x,代理将其映射到www.myserver.com/xy,并为客户端显示xy页面。如何使用筛选器或httpservlet来实现这一点 我的http servlet如下所示: public class ProxyFilt
localhost:8080/x
,代理将其映射到www.myserver.com/xy
,并为客户端显示xy
页面。如何使用筛选器或httpservlet来实现这一点
我的http servlet如下所示:
public class ProxyFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpProxyServer server =
DefaultHttpProxyServer.bootstrap()
.withPort(8080)
.withFiltersSource(new HttpFiltersSourceAdapter() {
public HttpFilters filterRequest(HttpRequest originalRequest, ChannelHandlerContext ctx) {
return new HttpFiltersAdapter(originalRequest) {
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
// TODO: implement your filtering here ????
return null;
}
@Override
public HttpResponse proxyToServerRequest(HttpObject httpObject) {
// TODO: implement your filtering here ????
return null;
}
@Override
public HttpObject serverToProxyResponse(HttpObject httpObject) {
// TODO: implement your filtering here ????
return httpObject;
}
@Override
public HttpObject proxyToClientResponse(HttpObject httpObject) {
// TODO: implement your filtering here ????
return httpObject;
}
};
}
})
.start();
}
public void init(FilterConfig config) throws ServletException {
}
public void destroy() {
}
}
LittleProxy使用
Host
头进行路由。因此,最简单的方法是在clientToProxyRequest
方法中将Host
设置为真正的服务器
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
if(httpObject instanceof FullHttpRequest) {
FullHttpRequest httpRequest = (FullHttpRequest)httpObject;
httpRequest.headers().remove("Host");
httpRequest.headers().add("Host", "myserver.com:8080");
}
return null;
}
公共HttpResponse客户端toProxyRequest(HttpObject HttpObject){
if(完整HttpRequest的httpObject实例){
FullHttpRequest httpRequest=(FullHttpRequest)httpObject;
httpRequest.headers().remove(“主机”);
添加(“主机”,“myserver.com:8080”);
}
返回null;
}