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