Class ProxyHandler.Reverse

java.lang.Object
org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.ContainerLifeCycle
org.eclipse.jetty.server.Handler.Abstract
org.eclipse.jetty.proxy.ProxyHandler
org.eclipse.jetty.proxy.ProxyHandler.Reverse
All Implemented Interfaces:
org.eclipse.jetty.server.Handler, org.eclipse.jetty.server.Request.Handler, org.eclipse.jetty.util.component.Container, org.eclipse.jetty.util.component.Destroyable, org.eclipse.jetty.util.component.Dumpable, org.eclipse.jetty.util.component.Dumpable.DumpableContainer, org.eclipse.jetty.util.component.LifeCycle, org.eclipse.jetty.util.thread.Invocable
Enclosing class:
ProxyHandler

public static class ProxyHandler.Reverse extends ProxyHandler

A ProxyHandler that can be used to implement a reverse proxy.

A reverse proxy must rewrite the client-to-proxy request URI into the proxy-to-server request URI. This can be done by providing a rewrite function to the constructor, and/or override rewriteHttpURI(Request).

See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.eclipse.jetty.proxy.ProxyHandler

    ProxyHandler.Forward, ProxyHandler.ProxyRequestContent, ProxyHandler.ProxyResponseListener, ProxyHandler.Reverse

    Nested classes/interfaces inherited from class org.eclipse.jetty.server.Handler.Abstract

    org.eclipse.jetty.server.Handler.Abstract.NonBlocking

    Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

    org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener, org.eclipse.jetty.util.component.AbstractLifeCycle.StopException

    Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container

    org.eclipse.jetty.util.component.Container.InheritedListener, org.eclipse.jetty.util.component.Container.Listener

    Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable

    org.eclipse.jetty.util.component.Dumpable.DumpableContainer

    Nested classes/interfaces inherited from interface org.eclipse.jetty.server.Handler

    org.eclipse.jetty.server.Handler.Abstract, org.eclipse.jetty.server.Handler.AbstractContainer, org.eclipse.jetty.server.Handler.Collection, org.eclipse.jetty.server.Handler.Container, org.eclipse.jetty.server.Handler.Sequence, org.eclipse.jetty.server.Handler.Singleton, org.eclipse.jetty.server.Handler.Wrapper

    Nested classes/interfaces inherited from interface org.eclipse.jetty.util.thread.Invocable

    org.eclipse.jetty.util.thread.Invocable.Callable, org.eclipse.jetty.util.thread.Invocable.InvocationType, org.eclipse.jetty.util.thread.Invocable.ReadyTask, org.eclipse.jetty.util.thread.Invocable.Task

    Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle

    org.eclipse.jetty.util.component.LifeCycle.Listener
  • Field Summary

    Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

    FAILED, STARTED, STARTING, STOPPED, STOPPING

    Fields inherited from interface org.eclipse.jetty.util.component.Dumpable

    KEY

    Fields inherited from interface org.eclipse.jetty.util.thread.Invocable

    __nonBlocking, NOOP
  • Constructor Summary

    Constructors
    Constructor
    Description
    Reverse(String uriPattern, String uriReplacement)
    Convenience constructor that provides a rewrite function using String.replaceAll(String, String).
    Reverse(Function<org.eclipse.jetty.server.Request,org.eclipse.jetty.http.HttpURI> httpURIRewriter)
    Creates a new instance with the given HttpURI rewrite function.
  • Method Summary

    Modifier and Type
    Method
    Description
    Function<org.eclipse.jetty.server.Request,org.eclipse.jetty.http.HttpURI>
     
    protected org.eclipse.jetty.http.HttpURI
    rewriteHttpURI(org.eclipse.jetty.server.Request clientToProxyRequest)
    Rewrites the client-to-proxy request URI to the proxy-to-server request URI.

    Methods inherited from class org.eclipse.jetty.server.Handler.Abstract

    destroy, doStop, getInvocationType, getServer, setServer

    Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle

    addBean, addBean, addEventListener, addManaged, contains, dump, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans, updateBeans

    Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

    getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.eclipse.jetty.util.component.Container

    getCachedBeans, getEventListeners

    Methods inherited from interface org.eclipse.jetty.util.component.Dumpable

    dumpSelf

    Methods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer

    isDumpable

    Methods inherited from interface org.eclipse.jetty.util.component.LifeCycle

    addEventListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, start, stop
  • Constructor Details

    • Reverse

      public Reverse(String uriPattern, String uriReplacement)

      Convenience constructor that provides a rewrite function using String.replaceAll(String, String).

      As a simple example, given the URI pattern of:

      (https?)://([a-z]+):([0-9]+)/([^/]+)/(.*)

      and given a replacement string of:

      $1://$2:9000/proxy/$5

      an incoming HttpURI of:

      http://host:8080/ctx/path

      will be rewritten as:

      http://host:9000/proxy/path

      Parameters:
      uriPattern - the regex pattern to use to match the incoming URI
      uriReplacement - the replacement string to use to rewrite the incoming URI
    • Reverse

      public Reverse(Function<org.eclipse.jetty.server.Request,org.eclipse.jetty.http.HttpURI> httpURIRewriter)

      Creates a new instance with the given HttpURI rewrite function.

      The rewrite functions rewrites the client-to-proxy request URI into the proxy-to-server request URI.

      Parameters:
      httpURIRewriter - a function that returns the URI of the server
  • Method Details

    • getHttpURIRewriter

      public Function<org.eclipse.jetty.server.Request,org.eclipse.jetty.http.HttpURI> getHttpURIRewriter()
    • rewriteHttpURI

      protected org.eclipse.jetty.http.HttpURI rewriteHttpURI(org.eclipse.jetty.server.Request clientToProxyRequest)

      Rewrites the client-to-proxy request URI to the proxy-to-server request URI.

      Applications that use this class typically provide a rewrite function to the constructor.

      The rewrite function rewrites the client-to-proxy request URI, for example http://example.com/app/path, to the proxy-to-server request URI, for example http://backend1:8080/legacy/path.

      Specified by:
      rewriteHttpURI in class ProxyHandler
      Parameters:
      clientToProxyRequest - the client-to-proxy request
      Returns:
      the proxy-to-server request URI.