是否有一种首选方法来检测 F5 负载均衡器传入请求中的 HTTP 与 HTTPS?我们正尝试使用 iRule 检测安全与非安全,并将相应的标头标志传递到我的 Web 服务器。
以下是我们目前所拥有的(未经测试):
when HTTP_REQUEST_SEND {
clientside {
if {[TCP::local_port] == 443} {
HTTP::header replace HTTP_X_FORWARDED_PROTO "https"
}
else {
HTTP::header replace HTTP_X_FORWARDED_PROTO "http"
}
}
}
如您所见,我们正在使用if {[TCP::local_port] == 443} { ... }
它来检测 SSL,但是将端口硬编码到规则中感觉很笨拙。有没有更好的方法?
也许检查:SSL::mode
,,HTTP:uri
或者别的什么?
答案1
您要检测的是连接是否正在使用客户端 SSL 配置文件。DevCentral 页面个人资料::存在演示如何执行此操作:
when CLIENT_ACCEPTED {
if { [PROFILE::exists clientssl] == 1} {
log local0. "client SSL profile enabled on virtual server"
}
}
奥利弗