X-Forwarded-For插入和改写-F5 irules和NetScaler Appexpert

需求:当HTTP请求中包含 X-Forwarded-For 的header, 这个值会被策略替换为一个单独的客户端IP地址。如果没有 X-Forwarded header, 将添加这个header并且加入客户端IP地址值。

F5 iRules:

when HTTP_REQUEST {
 if {[HTTP::header exists X-Forwarded-For]}{
 HTTP::header replace X-Forwarded-For "[HTTP::header X-Forwarded-For], [IP::
client_addr]"
 } else {
 HTTP::header insert X-Forwarded-For [IP::client_addr]
 }
}

NetScaler :

add rewrite action xforward replace HTTP.REQ.HEADER("X-Forwarded-For") CLIENT.IP.SRC
add rewrite policy xforward_check_pol "HTTP.REQ.HEADER(\"X-FORWARDEDFOR\").EXISTS"

add rewrite action xforward_add insert_http_header X-FORWARDED-FOR CLIENT.IP.SRC
add rewrite policy xforward_add_pol "HTTP.REQ.HEADER(\"X-FORWARDEDFOR\").EXISTS.NOT"
xforward_add

全局或者在 vServer 级别绑定