NGINX in Ubuntu

That small but fast, flexible and powerful HTTP server, NGINX, with HTTP/2 support, that help many high-load project to deal with traffic and load-balancing, looks like has some issues on Ubuntu – The Road Ahead for NGINX in Ubuntu.

By the way, OpenSSL and HTTP/2 gets more and more traction in different Linux distributions, for example Debian added OpenSSL version 1.0.2 to “testing” and “backports” of “stable”.

NGINX, PHP-FPM и загрузка файлов по HTTP

Наверно недели 3 сидел у меня в голове вопрос на тему NGINX + PHP-FPM (FastCGI) и как они будут работать с загрузкой файла по HTTP, если PHP-FPM процесс крутиться на другом сервере.

Сегодня наконец выпала возможность в конце рабочего дня собрать на 2 раздельных серверах такую конфигурацию, когда NGINX находиться на одном сервере, а процессы PHP-FPM на другом и NGINX весь .php прогоняет именно через те процессы, что крутятся удалённо.

Весь этот эксперимент проходил на Ubuntu Server 8.10, так что проблем с установкой или сборкой PHP или NGINX у меня не возникло. Единственное, что я сделал не верно и что меня затормозило на пол часа, так это конфигурация NGINX — я упустил строку, в которой PHP файлы указывалось искать не в Document Root, а в /scripts.

Собрать из HTML форму для загрузки файла не составляет труда, добросить за несколько минут туда PHP код, который сделает var_dump($_FILES); и отдаст содержимое загружаемого файла тоже не сложно.

Прицепить маленький текстовый файл и нажать на «Submit» ещё проще. И что же видно в результате? Всё работает идеально. Файл загружен при помощи POST на сервер с NGINX, а там передан к PHP-FPM и уже PHP-обработчик с ним работает как ему/вам угодно — что меня очень радует. Всё работает «out of the box» и никаких особых шаманских танцев не нужно.

Что огорчает, так что PHP-FPM до сих пор не входит ни в стандартную поставку PHP ни в какие-либо пакеты в стандартных дистрибутивах Linux — таскать за собой какие-либо Perl или Lighttpd spawn-скрипты не хочется, плюс те возможности, которые представляет PHP-FPM делает его очень вкусным.

Ещё огорчает, что PHP-FPM это patch к PHP и после его установки установить какой-либо модуль из PECL становиться намного сложнее если вы его хотите скомпилировать со static – приходиться использовать phpize.

Но вообще, эксперимент считаю удавшимся — сборка системы с NGINX + PHP-FPM не представляет сложности и я давно хотел испытать такую конфигурацию хотя-бы в парниковых условиях.