Ahora estoy implementando proyectos Django en CentOS y tengo un problema con X-Accel-Redirect para el servicio de archivos protegidos.
Aquí está mi nginx.conf
server { listen 80; server_name example; index index.html index.htm index.php; root /www/server/example; charset UTF-8; access_log /var/log/nginx/myproject_access.log; error_log /var/log/nginx/myproject_error.log; client_max_body_size 75M; location /public/ { root /www/wwwroot/myproject/; } location /media/ { root /www/wwwroot/myproject/; internal; } location / { include uwsgi_params; uwsgi_pass django; } ... } Por supuesto, los archivos protegidos están en /www/wwwroot/myproject/media .
Y el archivo de vista de python correspondiente es el siguiente.
class ProtectedView(generics.GenericAPIView): permission_classes = [IsAuthenticated] def get(self, request, id, target): file_name = "1.png" response = HttpResponse() response["X-Accel-Redirect"] = "/media/{0}".format(file_name) response["Content-Disposition"] = "attachment; filename={0}".format(file_name) return responsePero el servidor devuelve el error 404.
Y myproject_error.log es así.
[error] 24570#0: *5 open() "/www/server/example/media/1.png" failed (2: No such file or directory), client: 174.11.13.81, server: example, request: "GET /protected-view/ HTTP/1.1", upstream: "uwsgi://0.0.0.0:8008", host: "40.1.12.23" Tal vez el bloque location /media/ {} no funciona. ¿Qué problema? He cambiado el permiso pero no funciona. PD: estoy usando django rest framework.