Re: взаимодействие Nginx с fcgi БЕЗ пхп-файлов
Valery Kholodkov
valery+nginxru на grid.net.ru
Пт Мар 27 12:30:22 UTC 2020
fastcgi вообще-то бинарный протокол. Используй libfcgi. Вот пример:
https://github.com/vkholodkov/fcgi-cpp-appserver
https://github.com/vkholodkov/fcgi-cpp-appserver/blob/master/src/server/fcgi_server.cpp
On 27-03-20 12:11, greenwar wrote:
> Всем привет )
> тут запускаю fcgi-демона, который тупо ловит строку текста от Nginx, а в
> ответ шлёт ему соответствующую HTML-строку...
> и во всех конфигах, что я нашёл в гугле, фигурируют пхп-файлы, прям
> везде...
> Но у меня нет пхп-файла. У меня висит демон и через сокет ловит строку.
> И эту строку я вывожу в линух-консоль (для тестов) и вижу такой текст:
> (тут очевидно BB-кодов нет, так что сорри, как есть...):
>
> [I] Accepted connection on descriptor 5(host=127.0.0.1, port=41892)
> count = 872
> data:;
> QUERY_STRINGREQUEST_METHODGET
> CONTENT_TYPECONTENT_LENGTH
> SCRIPT_NAME/
>
> REQUEST_URI/
> DOCUMENT_ROOT/usr/local/www/sites/test1.rSERVER_PROTOCOLHTTP/1.1REQUEST_SCHEMEhttpGATEWAY_INTERFACECGI/1.1
>
> SERVER_SOFTWAREnginx/1.14.2
>
>
> REMOTE_ADDR127.0.0.1
>
>
> REMOTE_PORT53664
>
>
> SERVER_ADDR127.0.0.1
> SERVER_PORT80
> SERVER_NAMEtest1.ruREDIRECT_STATUS200 HTTP_HOSTtest1.ru
> HTTP_CONNECTIONkeep-alive
> HTTP_CACHE_CONTROLmax-age=0HTTP_UPGRADE_INSECURE_REQUESTS1iHTTP_USER_AGENTMozilla/5.0
> (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)
> Chrome/80.0.3987.149 Safari/537.36
> HTTP_ACCEPT_ENCODINGgzip,
> deflate#HTTP_ACCEPT_LANGUAGEru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7e/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
> 4096
> count = -1
> return false
> count = 0
> [I] Close 5
> [I] Accepted connection on descriptor 5(host=127.0.0.1, port=41894)
> count = 832
> data:▒
> QUERY_STRINGREQUEST_METHODGET
> CONTENT_TYPECONTENT_LENGTH
>
>
> SCRIPT_NAME/favicon.ico
>
>
> REQUEST_URI/favicon.ico
>
> DOCUMENT_ROOT/usr/local/www/sites/test1.rSERVER_PROTOCOLHTTP/1.1REQUEST_SCHEMEhttpGATEWAY_INTERFACECGI/1.1
> DOCUMENT_URI/favicon.ico
>
> SERVER_SOFTWAREnginx/1.14.2
>
>
> REMOTE_ADDR127.0.0.1
>
>
> REMOTE_PORT53664
>
>
> SERVER_ADDR127.0.0.1
> SERVER_PORT80
> SERVER_NAMEtest1.ruREDIRECT_STATUS200 HTTP_HOSTtest1.ru
> HTTP_CONNECTIONkeep-alive
>
> HTTP_PRAGMAno-cachHTTP_CACHE_CONTROLno-cacheiHTTP_USER_AGENTMozilla/5.0
> (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)
> Chrome/80.0.3987.149 Safari/537.36
>
>
>
> 'HTTP_ACCEPTimage/webp,image/apng,image/*,*/*;q=0.8
> HTTP_ACCEPT_ENCODINGgzip,
> deflate#HTTP_ACCEPT_LANGUAGEru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
> 4096
> count = -1
> return false
> count = 0
> [I] Close 5
>
>
> ну вот к этой строке у меня и возникают вопросы...
> 1. как видно, тут ДВАЖДЫ практически одно и то же (port=41894 - порт разный
> 2 раза)
> это 2 запроса делает браузер, или Nginx, или мой демон?
>
> 2. нет пробела между названием переменной и значением
>
> 3. а тут ещё и переноса строк нет:
> HTTP_PRAGMAno-cachHTTP_CACHE_CONTROLno-cacheiHTTP_USER_AGENT
>
> 4. подразумевается эти параметры обрабатывать регекспом?
>
> 5. мне столько параметров не надо, как убрать половину?
>
> 6. ОТВЕТ, который я пытаюсь записать обратно в сокет не даёт результата... Я
> шлю буквально следующее:
> HTTP/1.1 200 OK\r\nServer: maputa\r\nContent-Type:
> text/html\r\nContent-Length: 7\r\n\r\nWisdom\r\n\r\n
>
> Прошу знающих поделиться мудростью )
--
Val
Подробная информация о списке рассылки nginx-ru