Надо сделать ограничения по скорости отдачи файлов. Да и в принципе саму отдачу.
Дело было под Debian etch.
Для того, чтобы отдать файл средствами php, например, надо сделать
А теперь отдайте так файл 100 пользователям. Даже lighttpd+php(fastcgi) просядет. Из-за PHP.
Но если работа lighttpd – отдавать статические файлы, то почему же ее не переложить на него? Однако, не хочется давать прямую ссылку.
Именно для этого есть специальный заголовок: X-Sendfile
В конфиге надо включить для 1.4 для fastcgi (в описании fastcgi-сервера):
А для 1.5 fastcgi уже реализован через mod_proxy_core, соответственно
Проверьте отдачу. Разница налицо.
Далее, стоял вопрос в контроле скорости отдачи.
Если правила для всего сервера одинаковы, то можно прописать в конфиге
или суммарную для всего сервера:
Но если надо из скрипта управлять скоростью?
Делается вот таким образом:
Однако ограничение скорости не работает. Во всем виноват mod_speed, точнее его отсутствие среди исходников.
Вот исходник модуля.
Итак, скачиваем его в папку src к остальным исходникам lighttpd, в src/Makefile.am добавляем:
mod_speed_la_SOURCES = mod_speed.c
mod_speed_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
mod_speed_la_LIBADD = $(common_libadd)
Желательно это сделать до выполнения autogen.sh. Или же запустить
и потом в конфиге дописать в загрузке модулей mod_speed.
ПРИМЕЧАНИЯ
В 1.5 появилась возможность обработки X-Sendfile из бэкэнда у proxy_core. В версии 1.4 эта возможность была в модуле mod_fastcgi и от бэкэнда-апача, например, заголовок такой поймать было нельзя.
В версии 1.5 есть возможность выбирать backend для отдачи файлов. Посмотреть на сравнение можно тут. А установить нужный можно так:
Также у меня возникал вопрос, а как можно сделать простую обработку входящих параметров на некоем встроенном языке? Для примера, у nginx есть встроенный perl-овый модуль, при помощи которого можно реализовать мини-логику прямо на вэб-сервере. В lighttpd такая возможность нашлась – mod_magnet и в качестве обработчика скрипт на LUA. Ну что ж, будет повод освоить LUA.
В nginx то же самое делается через header X-Accel-Redirect.
deMone
January 26th, 2008
В курсе. Но был выбран именно lighttpd. Хотябы для того, чтоб сравнить его с nginx-ом
dm
January 26th, 2008