Forum Discussion

bianster_9734's avatar
bianster_9734
Icon for Nimbostratus rankNimbostratus
Sep 01, 2010

Missing HTTP response headers from BigIp LTM

I have an nginx webserver sitting behind a BigIP LTM. The nginx server receives long-poll HTTP requests from clients and return a response that contains caching headers (Etag/Last-Modified) that are used for the proper functioning of the long-poll system. The problem that I'm facing is that long poll requests to a virtual server with a public IP do not have the 2 headers in the response. The headers are in the first response but subsequently do not get included. The "date" response header is also incorrect as it's several hours earlier than what I'm expecting.

 

 

I also tested by making the requests to the internal IP assigned to the nginx server and the headers do get included in each response as expected. So I'm thinking the virtual server configuration has something to do with it but I'm not sure where the fault lies.

5 Replies

  • More information on Virtual Server setup:

     

     

    Destination: host

     

    Service Port: 80

     

    Type: Standard

     

    HTTP Profile: http-wan-optimized-compression

     

     

    Looking at the web server logs, the origin web server doesn't receive the subsequent requests, other that the first request with the correct response. Is it possible there is some caching on the BigIP LTM? How can I configure the VIP to prevent all responses from being cached if it is?
  • Hamish's avatar
    Hamish
    Icon for Cirrocumulus rankCirrocumulus
    There is caching on the F5, but the profile you're using doesn't have it enabled as default. Is it possible someone has enabled RamCache in the http-wan-optimised-compression profile? (Although I'm not sure it would remove those 2 headers, but if your backends aren't getting the request, but you are getting a response there's not many other places the request could be going).

     

     

    H

     

  • I'm quite sure that profile has ram cache disabled. Does the fact that the connections to the VIP have to be long standing/lived play a part? I've considered using NAT to allow direct access to the server but I kind of need to use iRules to disallow requests to a specific URI on the VIP.
  • After mucking around with tcpdump on the web server and the client machine, I've come to the conclusion that the "If-Modified-By" request header is somehow "lost" when the request hits the VIP. I've checked that the Max Header Size is 32KB (which covers my use-case comfortably). What's going on??
  • Anyway, I worked around this by introducing a custom header ("X-If-Modified-By") that doesn't get truncated and an iRule on the VIP inserts the real ""If-Modified-By" header with ""X-If-Modified-By"'s value. The custom header is then removed before the request hits the OWS.