Создать обратный прокси с помощью littleproxy

Я начинающий с littleproxyКак я могу создать обратный прокси-сервер?

Мой прокси-сервер получает запросы от клиентов и отправляет их на серверы (серверы только на обычном сайте, таком как www.xxx.com, содержат только веб-страницу (не остальные), а прокси-сервер получает ответ от сервера (веб-страницы) и возвращает клиенту.

Например, URL клиента localhost:8080/x, прокси отображает это на www.myserver.com/xy и показывает xy страница для клиента. Как это можно сделать с помощью фильтра или httpservlet.

Мой http сервлет будет следующим:

 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() {

    }
}

1 ответ

Решение

LittleProxy использует Host заголовок для маршрутизации. Самое простое, что вы можете сделать, это установить Host в качестве реального сервера в clientToProxyRequest метод.

    public HttpResponse clientToProxyRequest (HttpObject httpObject) {
        if (httpObject instanceof FullHttpRequest) {
            FullHttpRequest httpRequest = (FullHttpRequest) httpObject;. HttpRequest.headers () удалить ("хост");
            httpRequest.headers().add("Host", "myserver.com:8080");
        }
        вернуть ноль;
    }
Другие вопросы по тегам