Forum Discussion

Apidude's avatar
Apidude
Icon for Nimbostratus rankNimbostratus
Sep 13, 2022

iRule required to redirect URL to same URL but different port

I am looking for an iRule for this scenario:

A VIP handles traffic to multiple host fields on the same IP address. This is always mapped to the same server pool. Based on the requested host field in the HTTP GET, the F5 LTM needs to change the port from 8080 to either 81 or 80 or 8081.

For example:

if the requested host is test.com:8080 then it should be sent to test.com:80

If the requested host is abc.com:8080 then it should be sent to abc.com:81

Etc.

Could any of you kind souls provide an example for how to do this?

  • You can try something like this..  I haven't tested but hopefully work.

    when HTTP_REQUEST {
    if { ([getfield [HTTP::host] ":" 1]:[TCP::local_port]) equals "8080" } {
        HTTP::respond 301 Location "http://[HTTP::host]/abc.html"
        # http://[HTTP::host]:80/abc.html >>> Same like http://[HTTP::host]/abc.html
        }
    }

     

     

    • Apidude's avatar
      Apidude
      Icon for Nimbostratus rankNimbostratus

      Thank you so much Samir! BUT ... I am looking for something like this:

      when HTTP_REQUEST {
      if {[string tolower [HTTP::host]] starts_with "abc.com:8080" } { TCP::local_port replace 80 } }

      Does this look like it would work to take the connection on TCP/8080 from the client and send it to the server pool on TCP/80?

      • Apidude's avatar
        Apidude
        Icon for Nimbostratus rankNimbostratus

        I think this might be correct?

         

        when HTTP_REQUEST { if {[string tolower [HTTP::host]] starts_with "abc.com:8080" } { set new_port 80 } }

        Please let me know what  you think