apisix~轉發(fa)到某(mou)個靜態頁(ye)
路(lu)由轉發(也稱為請求(qiu)轉發或(huo)反向(xiang)代理(li)(li)(li))是一(yi)個核心功能(neng),它(ta)允許將(jiang)客戶端的(de)(de)請求(qiu)轉發到后端服務器。Nginx 廣泛用(yong)于處理(li)(li)(li)高并發的(de)(de)請求(qiu),并能(neng)夠有效地(di)分(fen)配流量(liang)和管理(li)(li)(li)負載。以下(xia)是關于 Nginx 路(lu)由轉發的(de)(de)一(yi)些基本理(li)(li)(li)論(lun)和概念。
反向代理
通常(chang)作為反(fan)向代理服(fu)務器工作,接收來自(zi)客戶(hu)端的(de)請求,然后將這些請求轉(zhuan)發到一個(ge)或多個(ge)后端服(fu)務器。反(fan)向代理的(de)主要優(you)點包括:
- 負載均衡:可以將請求分發到不同的后端服務器,以平衡負載。
- 安全性:隱藏后端服務器的真實 IP 地址,提高安全性。
- 緩存:可以緩存響應結果,從而提高性能并減輕后端的壓力。
- SSL 終止:可以在 Nginx 中處理 SSL/TLS 加密,減少后端服務器的負擔
定義上游

{
"nodes": [
{
"host": "resources.xxx.cn",
"port": 80,
"weight": 1
}
],
"timeout": {
"connect": 6,
"send": 6,
"read": 6
},
"type": "roundrobin",
"scheme": "http",
"pass_host": "node",
"name": "ad",
"keepalive_pool": {
"idle_timeout": 60,
"requests": 1000,
"size": 320
}
}
pass_host為
node表示使用目標節點列表中的主機名或IP,如果pass_host為pass,表示與保持與客戶端一致的主機名
pass_host
在 Apache APISIX 中,pass_host 是一個配置選項,用于控制如何處理請求的 Host 頭部。這個選項在添加上游服務時非常重要,因為它會影響到請求轉發到上游服務時的 Host 頭部的值。pass_host 有兩個可選值:node 和 pass。它們之間的區別及使用場景如下(xia):
1. pass_host: node
-
含義:當設置為
node時,APISIX 會將請求的Host頭部設置為上游節點的主機名或 IP 地址。這意味著上游服務接收到的請求將包含其自身的地址作為Host。 -
使用場景:
- 當后端服務需要知道實際請求是來自哪個客戶端,并且希望根據不同的主機名進行處理時,可以使用
pass_host: node。 - 適用于后端服務需要基于
Host頭部進行路由或處理的場景。例如,當使用多個域名指向同一后端服務,后端可能會根據Host頭部來決定返回的內容或執行的邏輯。
- 當后端服務需要知道實際請求是來自哪個客戶端,并且希望根據不同的主機名進行處理時,可以使用
2. pass_host: pass
-
含義:當設置為
pass時,APISIX 會將原始請求的Host頭部直接傳遞給上游服務。這意味著上游服務將看到客戶端請求的Host值,而不(bu)是上游節點(dian)的地址。 -
使用場景:
- 當你希望上游服務能夠識別并處理原始請求的
Host時,可以使用pass_host: pass。這對于某些應用程序來說非常重要,例如需要根據不同的域名返回不同內容的微服務架構。 - 適用于需要保持請求上下文的場景,比如 API 網關將請求轉發至多個后端服務,這些服務需要根據請求的
Host來做進一步處理。
- 當你希望上游服務能夠識別并處理原始請求的
總結
pass_host: node:將Host設置為上游節點的地址,適合需要基于上游節點進行處理的場景,本例使用的是node。pass_host: pass:保留原始請求的Host,適合需要根據客戶端請求的Host進行處理的場景。
定義路由規則
- 下面規則是通用的,表示以/adc開頭的URL,被替換為/green/red開頭的URL
- 注意:一個轉發規則,添加一個路由,如果多種轉發策略,需要為一個服務(上游)添加多個路由,
regex_uri最多只有兩個元素,第1個是路徑策略正則,第2個是轉發模板
{
"uri": "/adc/index.html",
"name": "ad",
"methods": [
"GET",
"POST",
"PUT",
"DELETE",
"PATCH",
"HEAD",
"OPTIONS",
"CONNECT",
"TRACE",
"PURGE"
],
"plugins": {
"proxy-rewrite": {
"uri": "/green/red/index.html" # 如果是正則轉發,可以配置regex_uri數組
}
},
"upstream_id": "544230536902607619",
"status": 1
}
添加apisix中添加路由轉發
這種方法會反向關聯(lian)到(dao)mse的路由(you)列表中(zhong)
- 在apisix的路由配置中,添加指定域名的轉發策略,轉發前綴與上面的
/adc保持一致

- 當你在apisix的網絡-路由中添加了對接的域名轉發策略之后,在mse網關上,通過
路由模塊,也可以看到之前添加的轉發策略

在MSE中添加路由轉發
- 為你的目標服務在mse中添加服務,如apisix-gateway這個服務

- 在mse中添加路由,指定真實域名,轉發策略,上游服務等,發布路由后可正常工作
