Heim  >  Fragen und Antworten  >  Hauptteil

nginx – Fragen zum Download-Server-Traffic-Balancing?

Wie können die folgenden Anforderungen gelöst werden?

Es gibt drei Nginx-Server

Eines der X wird als Webserver verwendet

Die anderen beiden Anhangsserver sind A und B, die jeweils unterschiedliche Anhangsdateien speichern.
A und B sind jeweils an die Domainnamen gebunden:
download-a.xxx.com
download-b.xxx.com

Wenn der Benutzer nach dem Besuch der Website eine Datei 123.zip herunterladen muss,
Der Download-Link lautet http://bbs.xxx.com/123.zip (beachten Sie, dass es sich nicht um die tatsächliche Download-Adresse handelt)

Aber ich weiß nicht, auf welchem ​​Server A oder B diese 123.zip-Datei abgelegt ist.
Die tatsächliche Download-Adresse lautet möglicherweise download-a.xxx.com/123.zip oder download-b.xxx.com/123. zip
Vielleicht haben Sie diese Datei nicht einmal

Anforderungen und Zwecke: Da die Exportbandbreite von A und B begrenzt ist, werden die Dateien auf verschiedenen Maschinen abgelegt und gleichzeitig die Bandbreite und der Speicherplatz von A und B effektiv genutzt. (Wenn die Dateien auf A und B gleich sind, erfolgt ein Lastausgleich Wird auch der Speicherplatz von A und B verschwendet, um die Datei wiederholt zu speichern. Ich hoffe, durch Urteilsvermögen herauszufinden, wo sich die Datei befindet, und den Speicherserver die Datei direkt an den Kunden senden zu lassen

Frage 1:

Wenn ich den PHP-Code der Website verwende, um festzustellen, auf welchem ​​Server sich die Datei befindet, A oder B, und dann auf der Seite die tatsächliche Adresse angezeigt wird und der Kunde darauf klickt, um sie direkt herunterzuladen, wie schreibe ich dann das PHP-Code?

Frage 2:

Wenn die obige Methode nicht durchführbar ist, kann ein Nginx-Server C vor A und B verwendet werden, um die Anfrage zu verarbeiten, was einer Reverse-Proxy-Rolle entspricht

Zum Beispiel

Der Benutzer klickt auf der Seite zum Herunterladen auf den Ressourcenlink http://bbs.xxx.com/123.zip. http://bbs.xxx.com ist der an Server C gebundene Domainname die Daten selbst nicht speichern.
Nach Erhalt der Anfrage ermittelt C, wo sich die Daten bei A oder B befinden. Wenn sie sich bei A befinden, teilt C A direkt mit, dass sie sich bei Ihnen befinden, und fordert A auf, die Datei direkt an den Benutzer zu senden, ohne C zu durchlaufen. Kann Nginx die oben genannten Anforderungen erfüllen?
Das Wichtigste ist, dass der Zielserver die Datei direkt an den Browser des Benutzers zurückgibt. Ist dies möglich, ohne den Datenverkehr und die Bandbreite von C zu nutzen?

为情所困为情所困2713 Tage vor410

Antworte allen(1)Ich werde antworten

  • 仅有的幸福

    仅有的幸福2017-05-16 17:24:10

    可以在文件名中提现存储位置,比如设定第x位表示存储在A/B服务器上。

    只需根据文件名判断即可。

    Antwort
    0
  • StornierenAntwort