2

の初心者ですがlittleproxy、リバース プロキシ サーバーを作成するにはどうすればよいですか?

私のプロキシはクライアントからリクエストを取得し、それらをサーバーに送信します(サーバーはwww.xxx.comと同じ通常のサイトのみにWebページのみが含まれ(残りではありません)、プロキシはサーバー(Webページ)から応答を取得してクライアントに戻ります。

たとえば、クライアントの URL はでありlocalhost:8080/x、プロキシはそれを にマップし、クライアントのページを表示しますwww.myserver.com/xyxyフィルターまたは 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() {

    }
}
4

1 に答える 1

2

LittleProxy はHostヘッダーを使用してルーティングを行います。あなたができる最も簡単なことは、メソッドHostで実サーバーとして設定することです。clientToProxyRequest

    public HttpResponse clientToProxyRequest(HttpObject httpObject) {
        if(FullHttpRequest の httpObject インスタンス) {
            FullHttpRequest httpRequest = (FullHttpRequest)httpObject;
            httpRequest.headers().remove("ホスト");
            httpRequest.headers().add("ホスト", "myserver.com:8080");
        }
        null を返します。
    }

于 2015-05-19T16:06:25.227 に答える