apache => nginx + fastcgi + php

Igor Sysoev is at rambler-co.ru
Sun Feb 13 16:19:35 MSK 2005


On Fri, 13 Feb 2005, RaPaMaN wrote:

> On Sunday 13 February 2005 14:09, Igor Sysoev wrote:
>> On Fri, 13 Feb 2005, RaPaMaN wrote:
>>> On Sunday 13 February 2005 13:26, Andrei Nigmatulin wrote:
>>>> В Птн, 13.02.2005, в 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. Буду пробовать.

cgi-fcgi ? У меня не получилось с его помощью запустить perl'овый
FastCGI под FreeBSD:

http://groups-beta.google.com/group/fido7.ru.unix.bsd/messages/1ab2820ed70fdf8e?thread_id=4a1416c1f8ae848fnoheader=1

>> Кстати, а кто-нибудь пробовал запускать lighttpd и fastcgi на разных
>> машинах ?
>
> Он это понимает, только как я понимаю :) на том сервере должна быть полная
> копия сайта,

Вернее сказать, для того, чтобы lighttpd передавал запросы на удалённый
fastcgi, (насколько я понял) у него должна быть иерархия файлов
с такими же именами, пусть даже пустые.

Что касается использования разных машин, то во время разработки я долго
не мог понять, почему у меня не работают POST'ы в fastcgi, и я поставил
lighttpd 1.3.5, чтобы сравнить с ним, но соединиться с другой машиной
у меня не получилось, пришлось запускать lighttpd и fastcgi на одной машине.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list