Я использую nginx в качестве обратного прокси для загрузки файлового хранилища с внешним провайдером. Когда я обрабатываю загрузку файла, мне нужно отслеживать (в моей базе данных), была ли загрузка успешной, прежде чем возвращать ответ пользователю. Поэтому я хотел бы использовать метод ngx.location.capture
, предоставленный в модуле lua-nginx, чтобы поговорить с моим сервером о результате запроса. Поскольку мне нужно дождаться ответа вышестоящего сервера, я могу выполнить захват только в header_filter_by_lua
. К сожалению, я не могу установить какую-либо внешнюю связь в header_filter_by_lua
. ngx.location.capture
, ngx.socket.*
и ngx.exec
доступны только тогда, когда ответ еще не пришел.
Как я могу реагировать на восходящий ответ в nginx?
Другие подходы, о которых я думал:
- Пусть скрипт просматривает журнал доступа, а затем выдает запрос на завивку. (Кажется, должен быть более простой способ)
- Первоначально отправьте файл через ngx.location.capture в content_by_lua (я не думаю, что это справится с размером файла до 5 ГБ)
Помощь приветствуется :)
os.execute("curl [...]")
Это кажется неправильным, но работает. Остерегайтесь передачи пользовательского ввода в оболочку! - person Niels-Ole   schedule 24.01.2016