Hi.

Am 23.10.2018 um 09:04 schrieb Imam Toufique:
> I am looking for some help on how to write the following apache proxypass 
> rules
> in HAproxy.  Not to mention I am at a bit of loss with my first try :-) .  
> Here
> are my current proxypass rules:
> 
> ProxyPass http://10.1.100.156:8000/jhub
> ProxyPassReverse http://10.1.100.156:8000/jhub

Well ProxyPass and ProxyPassReverse do a lot of thinks not just rewrites, as
mentioned in the doc

https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass
https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypassreverse


> <LocationMatch 
> "/jhub/(user/[^/]*)/(api/kernels/[^/]+/channels/websocket)(.*)">
>     ProxyPassMatch ws://10.1.100.156:8000/jhub/$1/$2$3
>     ProxyPassReverse ws://10.1.100.156:8000/jhub/$1/$2$3
> </LocationMatch>
> 
> As I am not well versed in the massive HAproxy configuration guide, if any of
> you can give me a hand with this, I would very much appreciate it.

I'm also not "that" expert but I would try the following, untested.

###
defaults
  mode http
  log global

  #... maybe some other settings
  timeout tunnel 10h

frontend https_001

  #... maybe some other settings

  acl websocket path_beg /jhub

  #... maybe some other  acls

  use_backend websocket_001 if websocket

backend websocket_001

  reqrep "^([^\ :]*)
/jhub/(user/[^/]*)/(api/kernels/[^/]+/channels/websocket)(.*)" "/jhub/\1/\2\3"

  # You will need to replace the first column with the response from the
  # backend response
  # rspirep "^Location:
/jhub/(user/[^/]*)/(api/kernels/[^/]+/channels/websocket)(.*)" "Location:
/jhub/\1/\2\3"
  # OR
  # http-response replace-header Location
"/jhub/(user/[^/]*)/(api/kernels/[^/]+/channels/websocket)(.*)" "/jhub/\1/\2\3"

  # add some checks

  server ws_01 10.1.100.156:8000 check
###

Here are some links which may help you also.

https://www.haproxy.com/blog/websockets-load-balancing-with-haproxy/
https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#4-reqirep
https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#4-rspirep

I would run haproxy in Debug mode and see how the request pass haproxy and adopt
the config.

It would be nice when you show us the working conf ;-)

It would be nice to have a

http-request replace-uri <match-regex> <replace-fmt>

to replace the reqrep.

> thanks

Hth
Aleks


Reply via email to