I have the follow scenario and I would like know If there are one way to try to solve this using iRules.
The condition is…one VS that responds on https using ssl offload and I need to redirect some uri to another pool and other condiction is keep the ssl conection for other URI. All others can be use the default pool on HTTP port.
(Client) <--- HTTPS ----> (F5 SSL Offload) <--IF /siteA (HTTP) ----> Pool A (Server Side)
virtual bar {
snat automap
destination 172.28.17.55:https
ip protocol tcp
rules myrule
profiles
clientssl
http
serverssl
tcp
}
pool poola {
members 10.10.70.110:http
}
pool poolb {
members 10.10.70.120:http
}
pool poolb_https {
members 10.10.70.120:https
}
rule myrule {
when HTTP_REQUEST {
switch -glob [HTTP::uri] {
"/siteA*" {
SSL::disable serverside
pool poola
}
"/siteB*" {
SSL::disable serverside
pool poolb
}
"/siteC*" {
pool poolb_https
}
default {
do something
}
}
}
}
just want to show connection could be established.
curl -Ik https://172.28.17.55/siteA
HTTP/1.1 404 Not Found
Date: Thu, 02 Dec 2010 04:46:55 GMT
Server: Apache/2.0.59 (rPath)
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1
curl -Ik https://172.28.17.55/siteB
HTTP/1.1 404 Not Found
Date: Thu, 02 Dec 2010 04:46:58 GMT
Server: Apache/2.0.59 (rPath)
Content-Type: text/html; charset=iso-8859-1
curl -Ik https://172.28.17.55/siteC
HTTP/1.1 404 Not Found
Date: Thu, 02 Dec 2010 04:46:59 GMT
Server: Apache/2.0.59 (rPath)
Content-Type: text/html; charset=iso-8859-1
Which is the better option? Enabling the Server SSL profile on the Virtual Server and disabling it where necessary via iRule, or not enabling it on the Virtual Server, and enabling it where necessary via iRule?
when HTTP_REQUEST {
set usessl 0
if { [string tolower [HTTP::uri]] starts_with "/secure" } {
pool ssl__pool
set usessl 1
} else {
pool static_pool
set usessl 0
}
}
when SERVER_CONNECTED {
if { $usessl == 0 } {
SSL::disable
}
}
I have the same issue, my VS on 443 port and pools with 80 port. Can I use the same irule ?
Daniel,
You don’t even need an iRule in this case. This is just a simple VIP listening on port 443, with a client SSL profile and a pool that points to servers on port 80. The client SSL profile decrypts the SSL on the client side, and the lack of a server SSL profile allows that traffic to flow unencrypted to the servers.
Ok, I got it, but I have different backend pools with http port, so I need to forward traffic based on URI to those pools. How can I do this with iRule?
My servers are using http port and I saw the location field on HTTP response header like below and it´s right, is there a way to change this that you know ?
Yes, I am using wildcard, but I’ve seen that without final slash the server respond http://teste.domain.com, the http header location field has this value and doesn’t connect.