Linux

反向代理轉發

  • August 1, 2021

你可以幫幫我嗎?

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

Round Robin DNS 和重定向通常是您可以自己配置的。對於任播,您必須能夠自己在多個地區宣布 BGP,並讓自己參與到世界各地的多個 ISP 中。

另一個絕妙的想法是簡單地忽略這個問題,並在前面打一個諸如 Cloudflare 或 Akami 之類的服務,讓它們處理負載平衡。如果您想要更多控制權,還可以將內容託管在 Azure 或 Google Cloud 等雲解決方案中,在較小程度上您不必擔心從 blob 儲存中獲取內容的負載。


你的規則做什麼

使用您的規則,您可以重寫數據包的目的地,並將它們發送到不同的伺服器。此外,您偽裝它們,以便後端伺服器看起來包來自您的前端*。*後端盡職盡責地回答,將回複數據包發送回您的前端,前端會在它的表中查找該連接的來源,並將數據包發送給原始客戶端。伺服器 - 它實際上是一個路由器,必須接觸數據包以重寫標頭,並且所有數據包都必須通過該伺服器。

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

引用自:https://serverfault.com/questions/1073207