Request forwarding redirects a URL or host to a specific server pool.
Prerequisites
Verify that a Layer 7 HTTP virtual server is available. See Add Layer 7 HTTP Virtual Servers.
Load Balancer rules support REGEX for match types. PCRE style REGEX patters is supported with a few limitations on advanced use cases. When REGEX is used in match conditions, named capturing groups are supported. See Regular Expressions in Load Balancer Rules.
Procedure
- Open the Layer 7 HTTP virtual server.
- Click to configure the load balancer rules for the HTTP Request Forwarding.
- From the drop-down list, select a match condition. Match conditions are used to match application traffic passing through load balancers. Multiple match conditions can be specified in one load balancer rule. Each match condition defines a criterion for application traffic.
Supported Match Condition Description HTTP Request Method Match an HTTP request method. http_request.method - value to match
HTTP Request URI Match an HTTP request URI without query arguments. http_request.uri - value to match
HTTP Request URI Arguments Used to match URI arguments aka query string of HTTP request messages, for example, in URI http://exaple.com?foo=1&bar=2, the "foo=1&bar=2" is the query string containing URI arguments. In an URI scheme, query string is indicated by the first question mark ("?") character and terminated by a number sign ("#") character or by the end of the URI.
http_request.uri_arguments - value to match
HTTP Request Version Used to match the HTTP protocol version of the HTTP request messages http_request.version - value to match
HTTP Request Header Used to match HTTP request messages by HTTP header fields. HTTP header fields are components of the header section of HTTP request and response messages. They define the operating parameters of an HTTP transaction. http_request.header_name - header name to match
http_request.header_value - value to match
HTTP Request Cookie Used to match HTTP request messages by cookie which is a specific type of HTTP header. The match_type and case_sensitive define how to compare cookie value. http_request.cookie_value - value to match
HTTP Request Body Match an HTTP request body content. http_request.body_value - value to match
Client SSL Match client SSL profile ID. ssl_profile_id - value to match
TCP Header Port Match a TCP source or the destination port. tcp_header.source_port - source port to match
tcp_header.destination_port - destination port to matchIP Header Source Matches IP header fields in of HTTP messages. The source type must be either a single IP address, or a range of IP addresses, or a group. See Add a Group. - If IP Header Source is selected, with an IP Address source type, the source IP address of HTTP messages should match IP addresses which are configured in groups. Both IPv4 and IPv6 addresss are supported
- If IP Header Source is selected with a Group source type, seelct the group from the drop-down list.
ip_header.source_address - source address to match
ip_header.destination_address - destination address to matchVariable Create a variable and assign a value to the variable. Case Sensitive Set a case-sensitive flag for HTTP header value comparison. If true, case is significant when comparing HTTP body value. - Select an action:
Action Description HTTP Reject Used to reject HTTP request messages. The specified reply_status value is used as the status code for the corresponding HTTP response message. The response message is sent back to client (usually a browser) indicating the reason it was rejected. http_forward.reply_status - HTTP status code used to reject
http_forward.reply_message - HTTP rejection messageHTTP Redirect Used to redirect HTTP request messages to a new URL. The HTTP status code for redirection is 3xx, for example, 301, 302, 303, 307, etc. The redirect_url is the new URL that the HTTP request message is redirected to.
http_forward.redirect_status - HTTP status code for redirect http_forward.redirect_url - HTTP redirect URLSelect Pool Force the request to a specific server pool. Specified pool member's configured algorithm (predictor) is used to select a server within the server pool. The matched HTTP request messages are forwarded to the specified pool.
When HTTP keep-alive is enabled and forwarding rules are configured in the load balancer, the server keep-alive setting takes precedence. As a result, HTTP requests are sent to servers already connected with keep-alive.
If you always want to give priority to the forwarding rules when the load balancer rule conditions are met, disable the keep-alive setting.
Note that the persistence setting takes precedence over the keep-alive setting.
Processing is done in the order of Persistence > Keep-Alive > Load Balancer Rules
http_forward.select_pool - server pool UUID
Variable Persistence On Select a generic persistence profile and enter a variable name. You can also enable Hash Variable. If the variable value is long, hashing the variable ensures that it is correctly stored in the persistence table. If the Hash Variable is not enabled, only the fixed prefix part of the variable value is stored in the persistence table if the variable value is long. As a result, two different requests with long variable values might be dispatched to the same backend server because their variable values have the same prefix part, when they should be dispatched to different backend servers.
Connection Drop If negate is enabled in condition, when Connection Drop is configured, all requests not matching the condition are dropped. Requests matching the condition are allowed.
Reply Status Shows the status of the reply. Reply Message Server responds with a reply message that contains confirmed addresses and configuration. - Click Save and Apply.