Назад | Перейти на главную страницу

nginx обслуживает статические файлы; apache django; безопасный файл с apache на nginx?

Я обслуживаю все статические файлы (/ static / и / media /) через nginx, а все остальные запросы направляются в apache с использованием mod_wsgi для использования django. nginx действует как прокси для Apache / mod_wsgi. Насколько я знаю, это рекомендуемый способ, чтобы один статический файл обслуживался отдельно.

Теперь у меня следующая ситуация: пользователь хочет загрузить файл, но сначала мне нужно проверить, разрешено ли пользователю загружать этот файл (который, очевидно, не находится в / static / none / media /, иначе он будет общедоступным ). Это означает, что запрос сначала должен поступить в django. Я полагаю, что рекомендуемая практика здесь - запретить apache обслуживать файл, поэтому, если пользователь авторизован для загрузки файла, могу ли я каким-либо образом сказать apache использовать nginx для обслуживания этого файла?

Во-первых, вам не нужно использовать одновременно nginx и apache. Одного из них достаточно, и он может правильно обрабатывать как статический, так и динамический контент. Я бы посоветовал nginx из-за второй части вашего вопроса.

Если вам нужен контроль доступа к вашим файлам на основе django, используйте X-SendFile чтобы сообщить веб-серверу, какой файл обслуживать.

Поскольку nginx является обратным прокси-сервером, он фактически получает ответ перед отправкой его пользователю. Я вручную установил заголовок X-Accel-Redirect из django, и он работал безупречно, как я и хотел. http://wiki.nginx.org/XSendfile