如何在 ubuntu 服务器上安装和配置 HAProxy?

How to install HAProxy and configure it in an ubuntu server?

我知道我以前问过这个问题,但我没有得到任何答案。

如何安装 HAProxy 并在 Ubuntu server 中配置它。我想用它来将侦听各种端口的应用程序映射到特定的 URL。

例如,如果一个名为 page-designer 的应用正在侦听 http://IP:5000,那么它应该将其映射到 http://IP/page-designer

我已经使用 sudo apt-get -y install haproxy 安装了 HAProxy 包。但是,在重新启动 HAProxy 服务之前,我必须对位于 /etc/haproxy/haproxy.cfgHAProxy 主配置文件做哪些更改才能使更改生效。主要是在此之后,如何将我的应用程序 运行 在各个端口上映射到特定的 URL,如上面提到的?

haproxy.cfg

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # Default ciphers to use on SSL-enabled listening sockets.
        # For more information, see ciphers(1SSL). This list is from:
        #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
        # An alternative list with additional directives can be obtained from
        #  https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
        ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
        ssl-default-bind-options no-sslv3

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

frontend http-in
    mode    http

    bind *:80

    acl path-page-designer              path_beg -i /employeeList    
    use_backend page-designer-backend   if path-page-designer
    redirect scheme https code 301 if !{ ssl_fc }

backend page-designer-backend
    mode    http

    option  httplog
    option  forwardfor

    http-request set-path /

    server  appserver1 206.189.22.155:5000   

要了解 haproxy 的工作原理,您可以在以下位置找到基本配置:

https://www.haproxy.com/blog/the-four-essential-sections-of-an-haproxy-configuration/

对于你的情况,你可以尝试这样的事情......

frontend http-in
    mode    http

    bind *:80
    bind *:443 ssl crt /etc/ssl/certs/your-cert.pem

    http-request redirect scheme https code 301 if !{ ssl_fc }

    acl path-page-designer              path_beg -i /page-designer    
    use_backend page-designer-backend   if path-page-designer

backend page-designer-backend
    mode    http

    option  httplog
    option  forwardfor

    http-request set-path /

    server  appserver1 206.189.22.155:5000