Cache 可以減輕後端 server 的負擔,同樣的 request 內容不用每次都再跟 server 要資料,可以使用 Nginx Cache 裡存的 response 做回應
2021年12月9日 星期四
Nginx學習筆記 (7) - Rewrite重定向使用
Rewrite 重定向
語法:
rewrite regex replacement [flag];
若 path 符合後面 regex 正規匹配的話,會重定向到 replacement 位置
Nginx學習筆記 (6) - Proxy設定
Proxy 主要分成兩種
1. 正向代理 (Forward proxy):代理對象是client
client <--> proxy <-- | --> server
(server不會知道client的IP)
2. 反向代理 (Reverse proxy):代理對象是server
client <-- | --> proxy <---> server
(client不會知道server的IP)
作為服務端,我們一般是拿Nginx做為 reverse proxy,前面講到的負載平衡的分流其實就是 reverse proxy 的一種常見功能,以下介紹更多 proxy 相關的功能
Nginx學習筆記 (4) - Load balacing負載平衡實作
為應付龐大流量時後端可能不是只有一個伺服器,Nginx作為中間代理,能解析用戶端來的請求的路徑,做派發到特定後端伺服器處理,當中也可做些負載平衡的設定,讓流量分散到各伺服器,防止只有單一伺服器繁忙的狀況
Nginx學習筆記 (3) - Location 路由匹配
config 檔裡的 location 可用來定義請求 path 對應的回應
以下說明匹配規則
首先,要記住這幾個符號代表的意思:
1. = /uri:精準匹配,如果有對到搜尋會到此為止
2. ^~ /uri:前綴匹配,如果有對到搜尋會到此為止
3. ~ pattern:正規表達式匹配,區分大小寫
4. ~* pattern:正規表達式匹配,不區分大小寫
5. /uri:前綴匹配
6. /:通用匹配,所有的路徑一定會匹配到這個
採用的順序是:
1. = 精準匹配最優先
2. ^~ 前綴匹配,對到即使用
3. ~pattern, ~* pattern 正則匹配
4. 沒帶修飾的前綴匹配
5. 通用匹配
多個正則匹配的狀況,會選擇設定寫在上面的那個匹配
多個前綴匹配成功的狀況,會選擇匹配最長的那個
Nginx學習筆記 (2) - 配置設定與指令
Config 檔案
Nginx的config配置檔案
- /etc/nginx/nginx.conf (主配置)
- /etc/nginx/conf.d/default.conf (預設會被加載的配置檔)
Nginx學習筆記 (1) - 利用Docker建立測試環境
為了之後學習與測試方便,我們先利用Docker來建立一個Nginx測試環境吧!
檔案結構:
docker-compose.yaml
nginx/
├─ log/
├─ html/
│ ├─ index.html
├─ default.conf
2021年12月8日 星期三
[PostgreSQL] 資料庫的Race Condition問題與交易隔離等級
資料庫的操作會併發處理,因此也會遇到Race Condition問題
此篇文章會說明各種問題情境與解法
這裡主要是考慮使用的是 PostgreSQL 資料庫的狀況,不一樣的資料庫可能會有不同結果
- 髒寫 (Dirty Write)
在前一個寫入還沒commit前,後面的寫入覆蓋前面的值,就是 Dirty Write
範例:
DB: X = 0
Transaction A:寫入 X = 10
Transaction B:寫入 X = 5
Transaction A:COMMIT
Transaction B:COMMIT
最後 X = 5,Transaction A 的寫入被蓋掉了