Reverse-Proxy-Weiterleitung

Reverse-Proxy-Weiterleitung

Kannst du mir helfen?

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

Ich verwende diese iptables-Regeln, um Loadbalancing-Server zu erstellen. Ich verteile nur .mp4- und .mp3-Inhalte, aber diese Regeln verwenden die Serverbandbreite, die ich für diese Weiterleitung verwende, anstatt die Bandbreite des Zielservers.

Wie kann ich das lösen? Der Benutzer muss die Bandbreite des Zielservers anstelle des Umleitungsservers verwenden. Danke.

Antwort1

Wie kann ich das lösen? Der Benutzer muss die Bandbreite des Zielservers anstelle des Umleitungsservers verwenden. Danke.

Im Allgemeinen gibt es einige Möglichkeiten:

  1. Verwenden Sie Round Robin DNS. Alle Server haben denselben Namen, aber unterschiedliche IPs. Clients wählen einen zufälligen Server aus.
  2. Verwenden Sie Weiterleitungen, um die Benutzer an einen geeigneten Server zu senden.
  3. Verwenden Sie Anycast. Alle Server haben dieselbe IP. Aufgrund der Routing-Funktionsweise werden Benutzer im Allgemeinen mit einem lokalen Server verbunden.

Round Robin DNS und Weiterleitungen können Sie im Allgemeinen selbst konfigurieren. Für Anycast müssen Sie entweder selbst BGP in mehreren Regionen ankündigen können und mit mehreren ISPs auf der ganzen Welt zusammenarbeiten.

Eine weitere hervorragende Idee wäre, das Problem einfach zu ignorieren und einen Dienst wie Cloudflare oder Akami vorzuschalten, der die Lastverteilung übernimmt. Wenn Sie mehr Kontrolle wünschen, können Sie den Inhalt auch in einer Cloud-Lösung wie Azure oder Google Cloud hosten, wo Sie sich weniger Gedanken über die Last beim Abrufen von Inhalten aus dem Blob-Speicher machen müssen.


Was Ihre Regeln bewirken

Mit Ihren Regeln schreiben Sie das Ziel des Pakets um und senden es an einen anderen Server weiter.ZusatzDumaskieren sie, sodass es für die Backend-Server so aussieht, als käme das Paket von Ihrem Frontend. Das Backend antwortet pflichtbewusst und sendet das Antwortpaket zurück an Ihr Frontend, das in seiner Tabelle nachschaut, woher diese Verbindung kam, und das Paket an den ursprünglichen Client sendet. Der Server – der eigentlich ein Router ist – muss die Pakete berühren, um Header neu zu schreiben, und alle Pakete müssen über diesen Server gehen.

In vielen Fällen kann ein solches Setup sehr sinnvoll sein. Es ist ziemlich trivial, große Mengen an Datenverkehr umzuleiten, und es ist einfach und robust zu konfigurieren. Es ermöglicht hohe Verfügbarkeit, bei der Sie Server ausschalten, die nicht reagieren, und bei Lasten, die nicht statusbehaftet sind, ist es extrem einfach, die Kapazität zu erhöhen – solange Ihr Router die Datenverkehrsmenge bewältigen kann.

verwandte Informationen