|
|
Δημοσιεύτηκε στις 7/11/2018 10:05:15 π.μ.
|
|
|

Το BBS ή οι ιστότοποι έχουν συχνά μόνο εσείς έχετε άδεια να δείτε αυτήν τη σελίδα ή να κάνετε λήψη αυτού του πόρου, πριν από λίγες ημέρες επισκέφτηκα τον διακομιστή nginx πώς να εφαρμόσετε αυτόν τον έλεγχο αρχείων, χρησιμοποιώντας το x-sendfile.
1. Τι είναι το X-Sendfile;
Το X-Sendfile είναι ένας μηχανισμός που αναμεταδίδει αιτήματα λήψης αρχείων από την εφαρμογή υποστήριξης στον διακομιστή ιστού front-end για επεξεργασία, ο οποίος μπορεί να βελτιώσει σημαντικά την αποτελεσματικότητα του διακομιστή αφαιρώντας την πίεση του προγράμματος back-end για ανάγνωση και επεξεργασία του αρχείου για την επεξεργασία της αποστολής, ειδικά όταν πρόκειται για λήψεις μεγάλων αρχείων.
Το X-Sendfile υλοποιείται μέσω μιας συγκεκριμένης κεφαλίδας HTTP: καθορίζοντας τη διεύθυνση ενός αρχείου στην κεφαλίδα X-Sendfile για να διαφημιστεί στον διακομιστή ιστού front-end. Όταν ο διακομιστής ιστού εντοπίσει αυτήν την κεφαλίδα που αποστέλλεται από το backend, αγνοεί άλλα αποτελέσματα από το backend και χρησιμοποιεί τα δικά του στοιχεία (συμπεριλαμβανομένων βελτιστοποιήσεων όπως κεφαλίδες προσωρινής μνήμης και επανασυνδέσεις σημείων διακοπής) για να στείλει το αρχείο στον χρήστη.
Ωστόσο, πριν χρησιμοποιήσετε το X-Sendfile, είναι σημαντικό να κατανοήσετε ότι αυτό δεν είναι μια τυπική δυνατότητα και είναι απενεργοποιημένο από τους περισσότερους διακομιστές ιστού από προεπιλογή. Διαφορετικοί διακομιστές ιστού έχουν διαφορετικές υλοποιήσεις, συμπεριλαμβανομένων διαφορετικών μορφών κεφαλίδας X-Sendfile. Εάν δεν έχουν ρυθμιστεί σωστά, οι χρήστες μπορούν να κατεβάσουν ένα αρχείο 0 byte.
Η χρήση του X-Sendfile θα επιτρέψει τη λήψη αρχείων σε καταλόγους εκτός ιστού (π.χ. /root/) ακόμα κι αν το αρχείο είναι απενεργοποιημένο υπό προστασία .htaccess.
Διαφορετικοί διακομιστές ιστού εφαρμόζουν διαφορετικές κεφαλίδες HTTP
Κεφαλίδα SENDFILE | Χρησιμοποιούμενος διακομιστής WEB | | X-Αποστολή αρχείου | Απάτσι, Lighttpd v1.5, Τσερόκι | | X-LIGHTTPD-αποστολή αρχείου | Lighttpd v1.4 | | X-Accel-Ανακατεύθυνση | Nginx, Τσερόκι |
Το μειονέκτημα της χρήσης του X-SendFile είναι ότι χάνετε τον έλεγχο του μηχανισμού μεταφοράς αρχείων. Για παράδειγμα, εάν θέλετε να εκτελέσετε ορισμένες ενέργειες μετά τη λήψη ενός αρχείου, όπως να επιτρέψετε στον χρήστη να κατεβάσει το αρχείο μόνο μία φορά, αυτό το X-Sendfile δεν θα μπορεί να το κάνει επειδή το σενάριο php στο παρασκήνιο δεν γνωρίζει εάν η λήψη είναι επιτυχής.
2. Πώς να χρησιμοποιήσετε το NGINX;
Το Nginx υποστηρίζει αυτήν τη δυνατότητα από προεπιλογή και δεν απαιτεί τη φόρτωση πρόσθετων μονάδων. Απλώς η υλοποίηση είναι λίγο διαφορετική και η κεφαλίδα HTTP που πρέπει να σταλεί είναι X-Accel-Redirect. Επιπλέον, πρέπει να κάνετε τις ακόλουθες ρυθμίσεις στο αρχείο διαμόρφωσης
εσωτερικό σημαίνει ότι αυτή η διαδρομή είναι προσβάσιμη μόνο εντός του Nginx και δεν μπορεί να προσπελαστεί απευθείας από το πρόγραμμα περιήγησης για την αποτροπή μη εξουσιοδοτημένων λήψεων.
3. Πώς να χρησιμοποιήσετε προγράμματα PHP;
Εάν προσθέσετε την κεφαλίδα X-Accel-Redirect, ο χρήστης θα κατεβάσει το αρχείο κάτω από τη διαδρομή /game. Εφαρμόζεται ο έλεγχος αδειών αρχείων.
Επίσημη εισαγωγή τεκμηρίωσης:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
|
Προηγούμενος:Έρωτας, γάμος και οικογένεια, πρώτο μισό του μήνα + 18 ΙουνίουΕπόμενος:Η ΚΙ είναι η πρώτη προοπτική σε ολόκληρο το δίκτυο που αυτοστοχοποιείται και σταθεροποιείται για ένα μήνα
|