Configuring a reverse proxy
Abyss Web Server can act as a reverse proxy to provide content transparently from another Web server behind it (commonly called a back-end server.)
The proxied server can be another Web server or an application server with a restricted or even a trivial HTTP support that has to be shielded from external clients. Reverse proxying is also the recommended way to take advantage of JSP (Java Servlet Pages) and Tomcat Web applications.
How does reverse-proxying work?
A reverse proxy rule in Abyss Web Server establishes a mapping between a virtual path in a frontal host and another virtual path in back-end (the proxied server.)
For example, if there is a rule associating the virtual path /app on mysite.com to http://192.168.1.103:8080/wb, a request to http://mysite/app/xyz/test.py received by Abyss Web Server will generate a request to http://192.168.1.103:8080/wb/xyz/test.py. The response to that request as received by Abyss Web Server will be forwarded to the client.
client ----request----> Abyss Web Server ----request----> Back-end server
client <---response---- Abyss Web Server <---response---- Back-end server
The typical use case of the reverse proxy feature is probably when a Java application server is involved.
Below are the instructions to install Tomcat (a Java Application Server) and how to use it as a back-end with Abyss Web Server:
- Download and install Tomcat. Ensure that the HTTP connector is installed.
- Run Tomcat.
- Tomcat includes a simple HTTP server listening on port 8080 and ships by default with a group of examples in /examples.
- Verify that the simple Web server of Tomcat is accessible by visiting the URL http://127.0.0.1:8080/examples or more generally http://tomcatip:8080/examples where tomcatip is to be replaced with the IP of the computer running the Tomcat application server.
Now add a new reverse proxy rule in Abyss Web Server using the following parameters:
- Local virtual path: /test
- Remote server address: 127.0.0.1 (or the IP of the server where Tomcat was installed)
- Remote port: 8080
- Remote virtual path: /examples