How to Front Edge Encryption Proxy via Load Balancer - And Use Case Where Edge Proxy and Load Balancers are Running on Different PortsDescription<!-- div.margin{ padding: 10px 40px 40px 30px; } table tr td { padding: 15px; } table.tocTable{ border: 1px solid; border-color:#E0E0E0; background-color: rgb(245, 245, 245); padding-top: .6em; padding-bottom: .6em; padding-left: .9em; padding-right: .6em; } table.noteTable{ border:1px solid; border-color:#E0E0E0; background-color: rgb(245, 245, 245); width: 100%; border-spacing:2; } table.internaltable { white-space:nowrap; text-align:left; border-width: 1px; border-collapse: collapse; font-size:14px; width: 85%; } table.internaltable th { border-width: 1px; padding: 5px; border-style: solid; border-color: rgb(245, 245, 245); background-color: rgb(245, 245, 245); } table.internaltable td { border-width: 1px; padding: 5px; border-style: solid; border-color: #E0E0E0; color: #000000; } .title { color: #D1232B; font-weight:normal; font-size:28px; } .spanColor { color: #646464; } h1{ color: #D1232B; font-weight:normal; font-size:21px; margin-bottom:-5px } h2{ color: #646464; font-weight:bold; font-size:18px; } h3{ color: #000000; font-weight:BOLD; font-size:16px; text-decoration:underline; } h4{ color: #646464; font-weight:BOLD; font-size:15px; text-decoration:; } h5{ color: #000000; font-weight:BOLD; font-size:13px; text-decoration:; } h6{ color: #000000; font-weight:BOLD; font-size:14px; text-decoration:; } hr{ border-top-width: 1px; border-top-style: solid; border-top-color: #cccccc; } ul { list-style: disc outside none; margin-left: 0; } li { padding-left: 1em; } --> How to front Edge proxies with a load balancer | Additional Configuration Steps Description Several settings need to be in place in order to successfully put a load balancer in front of one or multiple Edge proxies for Edge Encryption. This article describes settings that are in addition to what the product documentation describes. The load balancer needs to terminate SSL, that is, it also has to have its own trusted certificate that the user's browsers will accept. The load balancer should be listening on 443 (the port that the instance is contacted through), and communicate to the proxies on port 80 (the https or http port of the Edge Encryption proxy, preferably port 80). The edgeencryption.proxy.host setting in the edgeencryption.properties has to be set to the load balancer FQDN and not the proxy server FQDN. Note: How to set up each of these items differs between load balancers, but the configuration mentioned in this article has been set up by the network teams of multiple customers successfully. Additional Use Case When the Edge proxy and load balancers are running on different ports, connecting to the Edge proxy through the load balancer results in a blank page when performing any operation. Steps to Reproduce Start the proxy on a port (say 8082). Have a load balancer on a different machine listening on a different port (say 443). Point the load balancer to the Edge proxy. Connect using a browser through the <load-balancer>:443 URL. Note that a blank page is rendered as soon as any operation is performed. Solutions There are two possible solutions for this issue: Have the load balancer and Edge proxy listen on the same port number on respective hosts. Have an iRule on F5 that intercepts server-set redirect responses and removes the server's port from the Location header. A similar issue can be found on the F5 site. It includes the following iRule: ------------------------------ iRule ----------------------------------------- when HTTP_RESPONSE { # Check whether server response is a redirect if { [HTTP::header is_redirect]} { # Log original and updated values log local0. "Original Location header value: [HTTP::header value Location],\ updated: [string map ":[TCP::remote_port]/ /" [HTTP::header value Location]]" # Do the update, replacing :8080/ with / (where 8080 is the pool member's port) HTTP::header replace Location [string map ":[TCP::remote_port]/ /" [HTTP::header value Location]] } } # Note: You could replace the current mapping, ":[TCP::remote_port]/ /", with the VIP port if the virtual server is on a non-standard port: # Replace selected pool member's port with the VIP port HTTP::header replace Location [string map ":[LB::server port]/ :[clientside {TCP::local_port}]/" [HTTP::header value Location]] ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------