Nginx – Consentire l'accesso alla directory delle cartelle solo facendo riferimento all'URL

sviluppatore front-end qui. Spiacente in anticipo.

La mia azienda vuole memorizzare nuove costruzioni del nostro software sul nostro server web, che esegue Nginx, fornito da WP Engine .

Il path del file per queste build sarà company.com/downloads/file.zip . Vogliamo limitare l'accesso ai file in questa cartella, a less che non provengano da un URL di riferimento specifico che si trova dietro una port di accesso per i nostri clienti.

  • Se l'utente fa clic su qualsiasi file all'interno /downloads/ dal referrer consentito, l'utente ottiene il file
  • Se l'utente fa clic su link da qualsiasi altra fonte, ritorna 404 o reindirizza alla home page
  • Se il referrer vuoto o il tentativo di accesso diretto, ritorna 404 o reindirizza alla home page

Ho trovato una risorsa sulla prevenzione di un collegamento hotlink per le immagini (avremo a che fare con file .zip), che potrebbe funzionare per me, ma ho bisogno di aiuto nella syntax di questa lingua. Probabilmente c'è un grosso sbaglio.

 location ~ /downloads/$ { valid_referers none blocked ~.allowed_domain.com; if ($invalid_referer) { return 404; } } 

Il motore WP non mi permette di aggiungere il codice Nginx, quindi dovrò inviargli il codice che voglio implementare. Se qualcuno sa come farlo e mi aiuti, mi piacerebbe veramente apprezzare!

  • IT dipartimento IT per il noleggio / servizi IT gestiti
  • Bash Scripting: richiede che il script sia eseguito come root (o con sudo)
  • Windows 7: avere utenti svantaggiati installare e modificare font
  • setfacl equivalente a chmod per impostare / distriggersre la singola bandiera
  • Il permesso Nginx ha negato l'errore a monte, anche dopo il 777
  • Ereditare la properties; di file su Linux
  • Directory che un utente può leggere, ma la directory non può?
  • Debian - come impedire l'accesso alla lettura globale per tutti i file?
  • 2 Solutions collect form web for “Nginx – Consentire l'accesso alla directory delle cartelle solo facendo riferimento all'URL”

    Altra possibilità è quella di utilizzare l'intestazione X-Accel . Non conosco il tuo caso d'uso, quindi non può essere una buona misura.

    X-Accel è intestazione specifica nginx. Puoi rilasciare tale intestazione nel tuo script PHP come l' header("X-Accel-Redirect: /private-downloads/magic.iso") Quando nginx riconosce questa intestazione, esso server contenuto del file magic.iso localizzato in /data/private-downloads .

    Quindi il tuo task è quello di preparare download.php che controlla l'authorization e risponda con l'intestazione X-Accel o il reindirizzamento alla schermata di login.

    Definizione di /private-downloads/ in nginx.conf

     location /private-downloads/ { internal; # this alias /data/private-downloads; # this should be located outside of HTTP server root } 

    Per ulteriori dettagli, verificare le verifiche di x-accel su serverfault. 1

    È ansible utilizzare la direttiva nginx valid_referers . ( nginx doc )

     location /downloads/ { alias /var/www/downloads; valid_referers www.example.me ; if ($invalid_referer) { return 404; } } 

    Personalmente non ho mai provato questo in produzione, perché preferisco utilizzare l' intestazione X-Accel . È ansible verificare l'utente nello script PHP e submit l'intestazione X-accel nginx. L'intestazione chiede nginx al server i file statici da nginx.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.