For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

Michaelyang's avatar
Michaelyang
Icon for Cirrostratus rankCirrostratus
Oct 05, 2022
Solved

syntax for simple http monitor

Hello,

I am trying to create an http monitor
and Send String is
HEAD / HTTP/1.1

I want this string will accept HTTP status codes of 200 and 401. Any error codes (ie: 4xx and 5xx) will cause the receive string not to be matched and the check to fail.
So Receive String is
HTTP/1\.[01] [200][401]

But when I tried to do some experimenting I found it odd
EX.

I would like to ask why my curl web clearly shows 200 OK,
but my monitor does not work when I fill in 200, but it does when I fill in 401

Any help is appreciated.

  • use this linux bash to watch the pool member http response:

    echo -e "HEAD / HTTP/1.1" | nc 192.168.10.11 80

    and you Send String use HTTP/1.1, some web server maybe require you bring http Host Header,chang to this:

    firstly use echo -e "HEAD / HTTP/1.0\r\nConnection: close\r\n\r\n" | nc 192.168.10.11 80

    to watch the pool member response

    Send String is HEAD / HTTP/1.0\r\nConnection: close\r\n\r\n

    Receive String is HTTP/1\.(0|1) (200|401)

     

3 Replies

  • xuwen's avatar
    xuwen
    Icon for Cumulonimbus rankCumulonimbus

    use this linux bash to watch the pool member http response:

    echo -e "HEAD / HTTP/1.1" | nc 192.168.10.11 80

    and you Send String use HTTP/1.1, some web server maybe require you bring http Host Header,chang to this:

    firstly use echo -e "HEAD / HTTP/1.0\r\nConnection: close\r\n\r\n" | nc 192.168.10.11 80

    to watch the pool member response

    Send String is HEAD / HTTP/1.0\r\nConnection: close\r\n\r\n

    Receive String is HTTP/1\.(0|1) (200|401)

     

    • Michaelyang's avatar
      Michaelyang
      Icon for Cirrostratus rankCirrostratus

      Hello Xuwen,

      Thanks for your reply
      I have some questions to ask you
      Why Send String is "HEAD / HTTP/1.0\r\nConnection: close\r\n\r\n"
      not "HEAD / HTTP/1.1\r\nConnection: close\r\n\r\n"

      • xuwen's avatar
        xuwen
        Icon for Cumulonimbus rankCumulonimbus

        According to the protocol, HTTP/1.1 requires that the request header should bring a Host Header(some web servers can be compatible with HTTP/1.1 requests without a Host, and some will return a 40X status code), while HTTP/1.0 does not require mandatory carrying of a Host. The web server code should be compatible with HTTP/1.0 requests. The Send String in the built-in http monitor cannot carry a $1 variable instead of node ip when your pool have more than two pool members, You can also use external monitor and curl in the Linux shell to detect

        Bigip has a Linux shell template located in System ›› File Management: External Monitor Program File List ›› sample_ Monitor, you can use it after a little modification