# If you already have an haproxy.cfg file, you can probably leave the # global and defaults section as-is, but you might need to increase the # timeouts so that long-running CLI commands will work. global maxconn 4096 log 127.0.0.1 local0 debug defaults log global option httplog option dontlognull option forwardfor maxconn 20 timeout connect 5s timeout client 5min60s timeout server 5min60s frontend http-in bind *:80 mode http acl prefixed-with-jenkins path_beg /jenkins/ acl host-is-jenkins-example hdr(host) eq jenkins.example.com use_backend jenkins if host-is-jenkins-example prefixed-with-jenkins backend jenkins server jenkins1 127.0.0.1:8080 mode http reqrep ^([^\ :]*)\ /(.*) \1\ /\2 acl response-is-redirect res.hdr(Location) -m found rspirep ^Location:\ (http|https)://127.0.0.1:8080/jenkins/(.*) Location:\ \1://jenkins.example.com/jenkins/\2 if response-is-redirect
This assumes that you are using the /jenkins/ context path for both the site exposed from HAProxy, and Jenkins itself. If this is not the case, you will need to adjust the configuration.
If you are experiencing the following error when attempting to run long CLI commands in Jenkins > 2.80, and Jenkins is running behind HAProxy, it is probably due to HAProxy timing out the CLI connection. You can increase the
Using HAProxy 1.7.9, here is an example HAProxy.cfg to connect to the proxy using SSL, terminate the SSL connection, and then talk to Jenkins using plain HTTP: