Hello!
I've just had a fun debugging session, and discovered:
When I have a service configured with strip=/foo, and it upgrades the connection, fabio is hitting the backend at /foo instead of /.
I was going to paste some tcpdump showing this, but it's just a verbose way of saying what I've said above :)
Running fabio 1.5.2.
Here are the headers fabio sent with the outbound request to the service:
GET /vertica-websocket-streamer/ HTTP/1.1
Host: 10.31.135.183
Connection: Upgrade
Forwarded: for=10.16.206.119; proto=ws; by=172.18.10.5; httpproto=http/1.1
Origin: http://fabio-dev:9998
Sec-Websocket-Extensions: permessage-deflate; client_max_window_bits
Sec-Websocket-Key: hMmX3g/wxm2LMUnC3kuSrQ==
Sec-Websocket-Version: 13
Upgrade: websocket
X-Forwarded-For: 10.16.206.119
X-Forwarded-Port: 80
X-Forwarded-Prefix: /vertica-websocket-streamer
X-Forwarded-Proto: http
X-Real-Ip: 10.16.206.119
Oh, also, fabio isn't logging any of these requests. If I hit it without an Upgrade it will proxy and log the 400 response from the backend (it returns "expecting upgrade request"), but absolutely nothing is logged for upgraded requests - which in this case are returning 404, because the backend is expecting /.
Hello!
I've just had a fun debugging session, and discovered:
When I have a service configured with
strip=/foo, and it upgrades the connection, fabio is hitting the backend at/fooinstead of/.I was going to paste some tcpdump showing this, but it's just a verbose way of saying what I've said above :)
Running fabio 1.5.2.
Here are the headers fabio sent with the outbound request to the service:
Oh, also, fabio isn't logging any of these requests. If I hit it without an Upgrade it will proxy and log the 400 response from the backend (it returns "expecting upgrade request"), but absolutely nothing is logged for upgraded requests - which in this case are returning 404, because the backend is expecting /.