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 .

  • Pila server ottimale per WordPress
  • proxy di inversione nginx, ssl offloading, caching e paypepepe tutto in uno.
  • Come si esegue Smoking su Nginx?
  • Perché sshfs modifica le autorizzazioni del mountpoint locale per root?
  • Bash Scripting: richiede che il script sia eseguito come root (o con sudo)
  • Come creare utente "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.