Когда я выполняю Perl с FastCGI-оболочкой в nginx, получаю ли я преимущество в скорости?
Я использую nginx с этим сценарием в качестве оболочки FastCGI, с которой я начинаю:
spawn-fcgi -F 3 -u www-data -s /var/run/perl-fcgi.sock -P /var/run/perl-fcgi.pid -- ./perl-fcgi.pl
Теперь предположим, что у меня есть простой скрипт:
#!/usr/bin/perl
print "Content-type: text/plain\r\n\r\n";
print "hello\n";
Сценарий работает нормально, и я вижу "привет", когда я запрашиваю /text.pl. Но, как вы можете видеть в строке 106 оболочки FastCGI, скрипт выполняется с помощью exec(), поэтому он в основном выполняется в собственной среде Perl. Разве это не разрушает всю концепцию FastCGI, когда у меня нет уже инициализированного скрипта, но я вызываю его независимо?
Каков предпочтительный способ взаимодействия через FastCGI на nginx?
Ура, --polemon
PS: spawn-fcgi - это программа от lighttpd, которая запускает обертки FCGI и привязывает их к сокету.
1 ответ
Да, это разрушает всю концепцию FCGI, но по замыслу.
Используемый сценарий представляет собой адаптер FCGI для CGI, разработанный для того, чтобы обойти намеренную неспособность ngnix обслуживать сценарии CGI.
Чтобы использовать FCGI "правильно", просто укажите ngnix на свой сценарий, поддерживающий FCGI. С другой стороны, если ngnix может общаться с этим адаптером FCGI-CGI, вы знаете, что он может общаться с другим сценарием FCGI. Конкретная конфигурация сервера, вероятно, является вопросом для сбоя сервера.