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 .

  • Nginx carica il progresso combinato con la richiesta normale
  • Diversi PHP-config in Nginx
  • Non è ansible loopback al gateway php localhost causando nginx a timeout durante l'impostazione del firewall con ufw
  • Uso di nginx per riscrivere URL all'interno delle risposte in output
  • Intestazioni di sviluppo Curl con supporto SSL per Phusion Passenger 3
  • l'installazione di server SVN utilizzando NGINX
  • 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!

    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.