Внимание - вопрос. Можно ли как-нибудь из бэкэнда отдать редирект,
который не клиент отработает, а nginx, чтобы всякие там докачки из
кода убрать и вообще статику апачу в руки не давать, а решить
пущать/непущать, зарегистрировать факт доступа и отпустить с миром?
Без передачи клиенту редиректа, втихую?
Сейчас такого нет, но достаточно легко добавить возможность,
чтобы по получении в ответе бэкенда заголовка
"X-Accel-Redirect: /uri", nginx стал бы обрабатывать /uri.
Снаружи location с /uri можно закрыть директивой internal.
G> Это было бы очень здорово. Чтобы куки от бэкэнда сохранились только,
G> каким-то образом. Ну мне, во всяком случае, только куки нужны, а то
G> можно и вообще весь http-заголовок сохранять. Хотя неочевидно, что там
G> еще может понадобиться, кроме куков, все нужное можно и в nginx
G> прописать, вроде.
полностью подерживаю, очень полезная фича...
вот очень интересный подход, но завести не удалось(не очень то и
пытались) http://www.lighttpd.net/documentation/secdownload.html
Игорь, хотелось бы узнать будет ли что-нибудь аналогичное в nginx?
На мой взгляд, редирект, передаваемый бэкендом nginx'у гибче, чем
secdownload, так как в первом случае формат URI и способ проверки
определяется только бэкендом. Бэкенд же обязателен во обоих случаях,
поэтому я не вижу смысла дублировать понимание URI и проверку в двух
местах. В первом случае бэкенд скорее всего будет запрашиваться чаще
из-за загрузки файла частями (byte-ranges), но это не должно привести
к увеличении общей нагрузки.
Игорь Сысоев
http://sysoev.ru