Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 10873|Antwort: 0

[Web] Dateizugriff über Nginx' X-Sendfile-Mechanismus (php-Version) steuern

[Link kopieren]
Veröffentlicht am 07.11.2018 10:05:15 | | |
BBS oder Webseiten haben oft nur Sie die Berechtigung, diese Seite zu sehen oder diese Ressource herunterzuladen. Vor ein paar Tagen habe ich den nginx-Server besucht, wie man diese Dateisteuerung mit x-sendfile implementiert.

1. Was ist X-Sendfile?

X-Sendfile ist ein Mechanismus, der Dateidownload-Anfragen von der Backend-Anwendung an den Frontend-Webserver zur Verarbeitung weiterleitet, was die Servereffizienz erheblich verbessern kann, indem er den Druck des Backend-Programms, die Datei zu lesen und zu verarbeiten, insbesondere bei großen Dateidownloads, nimmt.

X-Sendfile wird über einen speziellen HTTP-Header implementiert: Die Adresse einer Datei im X-Sendfile-Header wird angegeben, um sie an den Frontend-Webserver zu bewirben. Wenn der Webserver diesen vom Backend gesendeten Header erkennt, ignoriert er andere Ausgaben aus dem Backend und verwendet eigene Komponenten (einschließlich Optimierungen wie Cache-Header und Breakpoint-Reconnects), um die Datei an den Benutzer zu senden.

Bevor Sie jedoch X-Sendfile verwenden, ist es wichtig zu verstehen, dass dies keine Standardfunktion ist und von den meisten Webservern standardmäßig deaktiviert wird. Verschiedene Webserver haben unterschiedliche Implementierungen, einschließlich unterschiedlicher X-Sendfile-Headerformate. Bei falscher Konfiguration können Nutzer eine 0-Byte-Datei herunterladen.

Die Verwendung von X-Sendfile ermöglicht das Herunterladen von Dateien in nicht-Webverzeichnissen (z. B. /root/), selbst wenn die Datei unter .htaccess-Schutz deaktiviert ist.

Verschiedene Webserver implementieren unterschiedliche HTTP-Header

SENDFILE-Header
Verwendeter WEB-Server
X-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Beschleunigen-UmleitungNginx, Cherokee

Der Nachteil der Verwendung von X-SendFile ist, dass man die Kontrolle über den Dateiübertragungsmechanismus verliert. Wenn du zum Beispiel bestimmte Aktionen nach dem Herunterladen einer Datei ausführen möchtest, etwa dem Benutzer erlauben, die Datei nur einmal herunterzuladen, kann diese X-Sendfile dies nicht, weil das PHP-Skript im Hintergrund nicht weiß, ob der Download erfolgreich ist.

2. Wie verwendet man NGINX?

Nginx unterstützt diese Funktion standardmäßig und benötigt keine zusätzlichen Module, um sie zu laden. Es ist nur so, dass die Implementierung etwas anders ist, und der HTTP-Header, der gesendet werden muss, ist X-Accel-Redirect. Zusätzlich musst du die folgenden Einstellungen in der Konfigurationsdatei vornehmen

intern bedeutet, dass dieser Pfad nur innerhalb von Nginx abgerufen werden kann und nicht direkt vom Browser abgerufen werden kann, um unbefugte Downloads zu verhindern.

3. Wie verwendet man PHP-Programme?


Wenn du den X-Accel-Redirect-Header hinzufügst, lädt der Benutzer die Datei unter dem /game-Pfad herunter. Unsere Dateiberechtigungskontrolle ist implementiert.

Offizielle Einführung in die Dokumentation:Der Hyperlink-Login ist sichtbar.




Vorhergehend:Liebe, Ehe und Familie, erste Hälfte des Monats + 18. Juni
Nächster:CF ist die erste Perspektive auf das gesamte Netzwerk, die sich einen Monat lang selbst orientiert und stabilisiert
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com