What is a reverse proxy?
A reverse proxy is an application that receives requests from the Internet and forwards them to a set of servers. These servers are usually located on an internal network and are not directly accessible from outside.
Reverse proxy capabilities:
- Load Balancing (TCP Multiplexing)
- SSL Offload/Acceleration (SSL Multiplexing)
- Content Switching/Redirection
- Application Firewall
- Server Obfuscation
- Single Sign-On
Why use a reverse proxy with OutSystems Platform?
- Reduce Load on Application Servers
Reverse proxies have the ability to compress and cache content, encrypt data (HTTPS), relieving these tasks from the application server.
- Increased security and traceability
With all application traffic passing through the reverse proxy, logging, authentication and access control can be configured and managed in a centralized place. It also prevents Internet exposure of application servers, protecting from vulnerabilities the servers might have in other software or services.
- Ensure High Availability
Reverse proxies can support high-availability methods. This will allow you to eliminate downtime. In an OutSystems Platform farm scenario, there are multiple application servers. The reverse proxy will then enforce a load balancing technique like round-robin to distribute the load among the servers in the cluster.
When a server goes down for maintenance, the system will automatically failover to the next server in the round-robin sequence keeping the applications available.
When serving OutSystems applications through a reverse proxy, the following requirements must be guaranteed:
- Maintain original host header of the request
The original host header must be sent to the application server. OutSystems Platform uses this name when generating URLs that go in the HTML. Keeping the original host header prevents internal server names to be used in the HTML generation and ensures URLs are correct.
- Referenced content availability
All modules that are used somehow by your application must be available from the outside world. For example, if you have a module myApp that uses a screen in myOtherApp module for logging in, and images from an ImageRepository module, then you need to have the following URL available to the outside world:
- Only the default ports for protocols HTTP and HTTPS are supported
OutSystems Platform only serves applications in HTTP port 80 and HTTPS port 443.
To learn more about how to set up your OutSystems Platform with a reverse proxy check the OutSystems Platform in Reverse Proxy scenarios guide.