[HAProxy] 根據請求對應 WordPress 主機回應的方法

本篇文章更新時間:2021/01/12
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣贊助支持。


這篇也是前篇 [HAProxy] 建立 WordPress 負載平衡 Load balancing 架構筆記 的延續筆記。

HAProxy 有一套 ACL 語法(Introduction to HAProxy ACLs)可以設定邏輯,本篇就屬於「特定請求對應特定主機的請求」方式,可以用在架設資料庫讀寫分離架構的時候,或是只有某個授權條件下才能使用..等等

研究 HAProxy 服務與 WordPress 應用時找到這個 Gist: HAProxy config for WordPress

裡面有意思的是:

  1. 把圖片與 WordPress 主站拆成兩組,不過這邊直接用網域區分,不是路徑。
  2. WordPress 主站用路徑請求方法Cookie 值來判斷管理員登入這件事,分成兩台主機應對。

這設定的寫法在 HAProxy v2 後會有問題(畢竟七年前了..)還有儘管看起來他都是連到同一組IP(s)來寫設定,但這還是可以忽略不看的去想像這樣的設定用法。

舉第二點的設定為例:

# Here we define the ACL for path & default traffic.
    acl url_admin  path_beg  -i  /wp-admin /wp-login.php
    acl url_admin hdr(Cookie) admin
    acl www_blog hdr_beg(host) -i www. blogs.
    block if METH_POST !www_blog
    use_backend admin if url_admin
    default_backend wp_www

    backend admin
     server REAL:wpadmin:172.28.0.139:80 172.28.0.139:80 check
    backend wp_www
     server REAL:wpadmin:172.28.0.139:80 172.28.0.139:80 check
     server REAL:wpweb:172.28.0.140:80 172.28.0.140:80 check

如果路徑符合 /wp-admin/wp-login.php 條件為真,且 Cookie 帶有 admin 字串,就將流量指派給 wpadmin 這台主機操作。

其他像是網域不符合判斷或請求方法不符合判斷都是轉往 wp_www 這組合的主機去處理或封鎖。

想怎樣拆解都可以靠對主機架構的理解與 WordPress 網站的研究搭配 ACL 寫判斷來處理。

比方說原本有主要預設的主機,其他都是臨時開通用來擴容的。預設主機上有與其他服務綁定 IP 內對外連線,所以特定請求必須由預設主機進行,這個時候如果開通來不及,或是有不能加開通的原因,就要透過這樣其他的手段來操作。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____34%_________]

發佈留言

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