On Sunday 13 February 2005 14:09, Igor Sysoev wrote:
On Fri, 13 Feb 2004, RaPaMaN wrote:
On Sunday 13 February 2005 13:26, Andrei Nigmatulin wrote:
В Птн, 13.02.2004, в 14:54, RaPaMaN пишет:
Добрый день,
Кто-нибудь делал связку nginx + fastcgi + php и отказ от апача на таких
хостах ? Если php пускать как fastcgi сервер.
Реально ли сейчас такая комбинация или еще надо подождать ?
Одна из проблем которую я вижу - отсутствие в php нормального fast-cgi
proccess manager. Туда должна входить возможность плавной остановки и
перезагрузки php процессов, перезагрузка конфигурации, логи и т.п.
Мы его начали писать, проект скорее всего будет выпущен под OS лицензией
и доступен для тестирования в ближайшее время.
Просто если бы lighttpd умел сжимать статику ( эта фича висит как запрос
в cvs), я бы его и поставил, он хорошо поддерживает fastcgi.
А nginx умеет сжимать все и динамику (проксированную) и статику. И мне
нравится :)
nginx полностью поддерживает remote FastCGI с двумя ограничениями,
которые не должны встретиться в реальных условиях:
Сегодня обновлюсь до 0.1.18 и начну эксперимент делать.
1) заголовок запроса (FastCGI параметры и HTTP_*) не может быть больше 64K.
2) заголовок ответа должен быть в одной FastCGI записи (8K).
А что является одной FastCGI записью ?
FastCGI - это бинарный протокол. Данные в нём передаются в записях.
Максимальный размер записи 64K - 1. Библиотека FastCGI, которая используется
для поддержки fastcgi в php и прочая, передаёт stdout в 8К-ных записях,
а stderr - в 512 байтах. В ответе fastcgi-сервера сначала идёт HTTP-подобный
заголовок, а затем начало тела ответа. Вот этот заголовок не должен быть
больше 8К.
А отправлять на fcgi сервер через location ? Правильно, я понимаю ? Т.е. для
файлов с расширением таким-то на fcgi, остальным в дргугую сторону.
В качестве FastCGI proccess manager можно попробовать src/spawn-fcgi.c
из дистрибутива lighttpd.
Можно еще попробовать cgi менелжер из dev-kit от mod_fastcgi. Буду пробовать.
Кстати, а кто-нибудь пробовал запускать lighttpd и fastcgi на разных
машинах ?
Он это понимает, только как я понимаю :) на том сервере должна быть полная
копия сайта,
Вернее сказать, для того, чтобы lighttpd передавал запросы на удалённый
fastcgi, (насколько я понял) у него должна быть иерархия файлов
с такими же именами, пусть даже пустые.
Что касается использования разных машин, то во время разработки я долго
не мог понять, почему у меня не работают POST'ы в fastcgi, и я поставил
lighttpd 1.3.5, чтобы сравнить с ним, но соединиться с другой машиной
у меня не получилось, пришлось запускать lighttpd и fastcgi на одной машине.
Игорь Сысоев
http://sysoev.ru