#django
#django
Вопрос:
Учитывая строку URL, которая указывает на файл в моем локальном экземпляре nginx, как мне заставить Django вернуть ответ, который приведет к загрузке файла из nginx? Я не хочу, чтобы Django открывал файл и передавал его в потоковом режиме.
Ответ №1:
Используйте X-Accel-Redirect
заголовок: http://wiki.nginx.org/XSendfile
Например:
resp = HttpResponse()
resp['X-Accel-Redirect'] = "/static/my_file"
return resp
Обратите внимание, что, согласно документации, вам нужно будет преобразовать локальный путь в URL-адрес, который может обслуживать nginx.
Комментарии:
1. Итак, я новичок в этом и немного смущен. Мой nginx находится на localhost:8001, и apache переписывает все localhost/static/file -> localhost:8001/file . Я попробовал то, что вы сказали выше (возможно, неправильно). Должен ли мой URL-адрес x-accel-redirect содержать ‘localhost: 8001’?
2. Вы должны настроить nginx для обслуживания статических файлов из некоторого базового каталога (например:
location /static/ { internal; root /my/static/files/; }
), затем вернуть абсолютный URL-адрес, который указывает где-то там. Например, если вы хотите обслуживать/my/static/files/my_file
, вы должны использовать/static/my_file
.