Как веб-сервер и процесс CGI взаимодействуют друг с другом? - PullRequest
5 голосов
/ 11 января 2012

Я хочу понять, как веб-сервер (например, nginx) и cgi / fastcgi взаимодействуют друг с другом. Как веб-сервер передает сценарий CGI процессу CGI и как процесс CGI отвечает на запрос.

В Nginx мы настраиваемся так, чтобы nginx передавал PHP-скрипты в php-fpm

 location / {
            root   /home/service/public_html;
            fastcgi_pass   unix:/tmp/php-fpm-test.socket;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /home/service/public_html/index.php;
            include        fastcgi_params;
        }

Как это работает?

Редактировать: Было бы полезно, если бы кто-нибудь дал мне кусок псевдокода для описания связи между процессом (или чем-то еще) и сокетом php-fpm unix.

1 Ответ

2 голосов
/ 22 января 2012

Приложение CGI - это просто стандартный исполняемый файл или сценарий - каждый HTTP-запрос к веб-серверу соответствует отдельному исполнению / экземпляру этого исполняемого файла или сценария, где переменные среды используются для передачи информации о запросе (например, URL-адрес запроса).и метод запроса), а тело HTTP-запроса передается на стандартный ввод.Сценарий / исполняемый файл передает необработанный вывод HTTP через стандартный поток вывода на веб-сервер.

Пример приложения CGI см. На странице википедии пример Perl-скрипта и, для более подробной информации, читают спецификацию CGI


Быстрый CGI - это попытка уменьшить издержки интерфейса CGI - как запуск нового процессаявляется довольно дорогой задачей во многих операционных системах, Fast CGI пытается уменьшить это, позволяя одному длительному процессу Fast CGI обрабатывать многие запросы HTTP.

Хотя многие части Fast CGI аналогичны CGI (дляПример формата переменных среды), с Fast CGI вся информация передается через стандартный поток ввода.

Вам следует попробовать поискать на веб-сайте Fast CGI длябольше информации - в частности, там есть спецификация Fast CGI, которая подробно объясняет все это.

...