Ho il mio django servito da apache utilizzando Vhost. Il file di configurazione è la seguenteXsendFile con apache e django
WSGIPythonPath /srv/www/myproject/testproject/
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.betarhombus.com
WSGIScriptAlias//srv/www/testproject/testproject/testproject/wsgi.py
<Directory /srv/www/testproject/testproject/testproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /srv/www/testproject/testproject/static/
Alias /media/ /srv/www/testproject/testproject/media/
<Directory /srv/www/testproject/testproject/static>
Require all granted
</Directory>
<Directory /srv/www/testproject/testproject/media>
Require all granted
</Directory>
</VirtualHost>
voglio limitare i file multimediali ad essere servita solo su speicific registrati utenti. Quindi mi sono imbattuto in XsendFile. Se capisco correttamente che cosa fa mentre tu hai django fai tutto il controllo per il file multimediale che vuoi servire è poi servito da Apache come file statico. Quindi la procedura è il seguente se sto indovinando giusto
- Attivare XsendFile.
- CREATE VIEW che controlla per i file multimediali permessi ecc e serve loro
- associato con l'URL nel file di urls.py
Quindi posso usare `e lavorerò normalmente come se fosse servito utilizzando l'iniziale URL del file multimediale. Lo capisco correttamente? Le mie domande sono le seguenti:
Informazioni su 1.activating XSendFile. Dovrebbe essere fatto nel file conf all'interno del mio tag Vhost? L'impostazione di XsendFile è sufficiente? Devo rimuovere Alias per la direttiva media e anche la sezione per i file multimediali? Voglio che i file multimediali vengano visualizzati solo dalla mia visualizzazione?
C'è qualcos'altro di cui dovrei essere a conoscenza?
Edit: La mia configurazione è
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.betarhombus.com
WSGIScriptAlias//srv/www/testproject/testproject/testproject/wsgi.py
XSendFile On
XsendFilePath /srv/www/testproject/testproject/media/
<Directory /srv/www/testproject/testproject/testproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /srv/www/testproject/testproject/static/
<Directory /srv/www/testproject/testproject/static>
Require all granted
</Directory>
</VirtualHost>
mia urls.py
#for xsendmedia file serving
url(r'^media\/(?P<path>.*)$', 'customer.views.media_xsendfile'),
e la mia vista
def media_xsendfile(request, path):
#here will be checked if user can access media
response = HttpResponse()
response['Content-Type']=''
response['X-Sendfile']= smart_str(os.path.join(settings.MEDIA_ROOT, path))
return response
Il mio problema è che alcuni dei file multimediali sono condivisi normalmente e alcuni non lo sono e ottengono un errore interno del server
Cosa intendi con "alcuni file multimediali sono condivisi normalmente e altri no"? Potresti spiegarlo un po 'di più? Stai usando il decoratore personale_member_qualificato? – vsachar