本篇文章更新時間:2021/01/12
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
這篇也是前篇 [HAProxy] 建立 WordPress 負載平衡 Load balancing 架構筆記 的延續筆記。
HAProxy 有一套 ACL 語法(Introduction to HAProxy ACLs)可以設定邏輯,本篇就屬於「特定請求對應特定主機的請求」方式,可以用在架設資料庫讀寫分離架構的時候,或是只有某個授權條件下才能使用..等等
研究 HAProxy 服務與 WordPress 應用時找到這個 Gist: HAProxy config for WordPress
裡面有意思的是:
- 把圖片與 WordPress 主站拆成兩組,不過這邊直接用網域區分,不是路徑。
- 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 內對外連線,所以特定請求必須由預設主機進行,這個時候如果開通來不及,或是有不能加開通的原因,就要透過這樣其他的手段來操作。