HAProxy 簡介

簡介

HAProxy是軟體版的路由器,它主要能為你的機器做轉址。

譬如說我有很多的服務 (apache2, node.js) 在同一台機器上,每個服務都有不同的domain。

那麼大家的流量都會從80 port近來, 這時HAProxy會根據輸入網址(domain name)幫你從80 port轉址到其他的port服務。

例如:

  • blog.glenus.com -> 1.2.3.4:3000
  • glenus.com -> 1.2.3.4:3001
  • node.glenus.com -> 4.3.2.1:3000 也能轉址到其他的機器上面。

設定 (環境: Ubuntu 16.04)

設定檔路徑預設是在

/etc/haproxy/haproxy.cfg

設定範例

    frontend www-http
    # 前端的介面 frontend 
            bind *:80   # 導入的port
            mode http
            # Define ACLs for each domain
            acl blog hdr(host) -i blog.glenus.com # 定義domain的規則

            # Figure out which backend (= VM) to use
            use_backend blog_server if blog # 導出到blog_server

    frontend www-https
    # 加入https設定
            bind *:443 ssl crt /etc/haproxy/certs/blog.glenus.com.pem
    # 如果想要對不同的網域有憑證的話,在後面加 crt {domain name}
    # ex. bind *:443 ssl crt /etc/haproxy/certs/blog.glenus.com.pem crt /etc/haproxy/certs/glenus.com.pem 
    # /etc/haproxy/certs/ 是我自己建立的,憑證是由Certbot所產生。
            mode http

            use_backend blog_server if { ssl_fc_sni blog.glenus.com }

    backend blog_server
    # 後端的介面 frontend 
            balance leastconn
            option httpclose
            option forwardfor
            cookie JSESSIONID prefix

            server srv01 localhost:1030 
            # 規則
            # server 名稱 ip:port

若想使用HTTPS的話,

請看我的另一篇文章:

在WordPress使用SSL憑證(HTTPS) – Certbot on HAProxy

Reference

https://cbonte.github.io/haproxy-dconv/

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *