On Thu, May 23, 2024, at 11:34 AM, William Manley wrote:
> On Thu, May 23, 2024, at 10:08 AM, Amaury Denoyelle wrote:
> > On Wed, May 22, 2024 at 04:58:44PM +0100, William Manley wrote:
> > > On Wed, May 22, 2024, at 1:06 PM, Amaury Denoyelle wrote:
> > > > FYI, I just merged a series of fix to improve reverse HTTP. It is now
> > > > possible to use PROXY protocol on preconnect stage. Also, you have the
> > > > availability to use PROXY v2 TLV to differentiate connections. Note
> > > > however that PROXY unique-id is not supported for now due to internal
> > > > API limitations.
> > > > > If you can do not hesitate to test this and report us if it's 
> > > > > sufficient
> > > > for you.
> > > I've just tried this out and there's something about these changes that 
> > > are causing my tests to fail.
> > > It seems to be triggered by "MEDIUM: rhttp: create session for active 
> > > preconnect"
> > > Tested versions:
> > > eb89a7da33ae30da3ed61570aa1597987b59dff3 OK
> > > ceebb09744df367ad84586a341d9336f84f72bce OK
> > > 45b80aed70a597614e31b748328570785099dfec OK
> > > 12c40c25a9520fe3365950184fe724a1f4e91d03 BAD
> > > 60496e884e5220b9330a1d8b3a1218f7988c879a BAD
> > > 4a968d9d274a24e5d00bd3c03dd22fe2563b13af BAD
> > > I'll investigate further tomorrow.
> > 
> > Hum can you describe what sort of tests you are running ?
>
> [...]
>
> I've attached the configs used during the test.  You'll notice that each 
> block uses a different IP address from 127.0.0.*.  This makes the TCP flow 
> graph in wireshark meaningful.  I've attached a packet capture of the test 
> failing.  I'd also attach a packet capture from it succeeding, but it's a bit 
> big.  I'll look into them and try to figure out where it's going wrong.

I've compared the good trace and the bad trace and I think I can see where this 
is going wrong.  My RHTTP block on the node looks like:

        # Requests from the portal to the node arrive at this frontend over 
rhttp:
        listen flask_reverse_proxy
                mode http
                log global
                bind rhttp@rhttp_backend/srv
                # We dynamically route to the listening socket based on the 
hostname, this
                # way we can add new domains without a node deploy:
                http-request capture req.hdr(X-Remote-IP) len 15
                http-request capture req.hdr(X-Remote-Port) len 5
                http-request set-dst hdr(X-Remote-IP)
                http-request set-dst-port hdr(X-Remote-Port)

                http-response add-header Vary X-Remote-IP,X-Remote-Port

                server srv 0.0.0.0:0 source 127.0.0.8

It seems like with the active preconnect commit (12c40c25) it ignores set-dst, 
so instead of connecting to the IP requested (in this case 127.0.0.7) it 
attempts to connect to 127.0.0.8.

Thanks

Will
---
William Manley
Stb-tester.com

Stb-tester.com Ltd is a company registered in England and Wales.
Registered number: 08800454. Registered office: 13B The Vale,
London, W3 7SH, United Kingdom (This is not a remittance address.)

Reply via email to