|
|
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-Sendfile | Apache, Lighttpd v1.5, Cherokee | | X-LIGHTTPD-send-file | Lighttpd v1.4 | | X-Beschleunigen-Umleitung | Nginx, 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. JuniNächster:CF ist die erste Perspektive auf das gesamte Netzwerk, die sich einen Monat lang selbst orientiert und stabilisiert
|