#c #nginx #fastcgi
#c #nginx #fastcgi
Вопрос:
Я написал простую программу на C , отвечающую на HTTP, используя http://www.fastcgi.com библиотека веб-сервер nginx. Это работает почти великолепно. Но я заметил, что функция fcgi
int FCGX_Accept_r(FCGX_Request *request);
не возвращается до того, как весь запрос будет передан на сервер. Проблема: я не могу проанализировать параметры из URI до завершения передачи файла: я хочу проанализировать аргумент «?sid =», чтобы отклонить передачу от недопустимого пользователя. Было бы пустой тратой пропускной способности, разрешать кому-либо отправлять файлы объемом 1 ГБ на сервер.
Насколько я знаю, веб-сервер всегда отправляет FCGI_BEGIN_REQUEST через соединение FastCGI при запуске нового запроса, затем FCGI_PARAMS и т.д. Поэтому было бы неплохо отреагировать на содержимое некоторых параметров до того, как пользователь передаст все (возможно, ненужные и слишком большие) данные.
Также я прочитаю больше документации nginx о его возможностях FastCGI.
обновление: Попытка отправить файл размером 2 ГБ в nginx через HTML-форму прослушивание обмена между nginx и fastcgi: nginx даже не пытается отправить байт в приложение FastCGI до того, как поступят все 2 ГБ. Итак, такое поведение вроде как нормально. И если вам нужна функциональность, о которой я прошу, оказывается, вам следует разработать свой собственный модуль nginx или простой веб-сервер. Hm…
Ответ №1:
Я думаю, вы можете управлять этим :
location /xxx/upload {
access_by_lua '
//check cookie or something can recognize the req is valid or not
';
fcgi_pass XXXX;
}
проверьте эту ссылку:
http://openresty.org /