27.03.2020 19:30, Valery Kholodkov пишет:
fastcgi вообще-то бинарный протокол. Используй libfcgi. Вот пример:

https://github.com/vkholodkov/fcgi-cpp-appserver
https://github.com/vkholodkov/fcgi-cpp-appserver/blob/master/src/server/fcgi_server.cpp

Извините за оффтоп, но не подскажет ли кто готового решения простого клиента fastcgi (отправить запрос за статистикой php fpm) на pure C (ищется для использования в  Collectd модуле php-fpm). Как-то не нахожу времени самому разобраться и написать, а готового не подвернулось.

Заранее благодарен.


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

Прошу знающих поделиться мудростью )



_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить