反向代理轉發

反向代理轉發

你可以幫幫我嗎?

sudo echo "1" > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 1.1.1.1
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 2.2.2.2
sudo iptables -t nat -A POSTROUTING -j MASQUERADE

我正在使用這些 iptables 規則來建立負載平衡伺服器。我只是分發 .mp4 和 .mp3 內容,但這些規則使用我用於進行此轉發的伺服器頻寬,而不是目標伺服器頻寬。

我該如何解決這個問題?使用者必須使用目標伺服器頻寬而不是重定向伺服器。謝謝。

答案1

我該如何解決這個問題?使用者必須使用目標伺服器頻寬而不是重定向伺服器。謝謝。

一般有以下幾種方法:

  1. 使用循環 DNS。所有伺服器共享相同的名稱,但 IP 不同。客戶端將選擇一個隨機伺服器。
  2. 使用重定向將使用者傳送到適當的伺服器。
  3. 使用任播。所有伺服器都有相同的IP。由於路由的工作方式,使用者通常會連接到本地路由。

循環 DNS 和重定向通常是您可以自己配置的。對於選播,您必須能夠自行在多個地區宣布 BGP,並與世界各地的多個 ISP 合作。

另一個好主意是簡單地忽略這個問題,並將 Cloudflare 或 Akami 等服務放在前面,讓它們處理負載平衡。如果您想要更多控制,您也可以將內容託管在 Azure 或 Google Cloud 等雲端解決方案中,您不必擔心從 Blob 儲存空間取得內容的負載。


你的規則做什麼

根據您的規則,您可以重寫封包的目的地,並將它們傳送到不同的伺服器。在添加偽裝他們,以便後端伺服器看起來該套件來自您的前端。後端盡責地應答,將回覆資料包發送回前端,前端在其表中查找該連接的來源,並將資料包發送到原始客戶端。伺服器 - 實際上是一個路由器,必須接觸資料包以重寫標頭,並且所有資料包都必須通過該伺服器。

在許多情況下,這樣的設定很有意義。路由大量流量相當簡單,而且配置起來既簡單又可靠。它允許高可用性,您可以刪除沒有回應的伺服器,並且對於無狀態的負載,增加容量非常容易 - 只要您的路由器可以處理流量。

相關內容