Блог о веб-технологиях и JavaScript

Хостинг NodeJS сайтов через Varnish

Если необходимо запускать на сервере сразу несколько веб приложений, то это можно делать при помощи прокси сервера Varnish. Таким образом можно хостить множество приложений NodeJS, а также Apache, Tomcat и прочее. Схема работы проста — Varnish устанавливается на порт 80, приложения NodeJS (Apache, Nginx) на другие свободные порты. Когда поступает запрос на порт 80, Varnish по имени хоста определяет какому именно приложению оно предназначается и передает запрос туда.

Теперь подробнее и по порядку (перечисленные ниже инструкции я опробовал на своем Ubuntu сервере, для других дистрибутивов или OS процедура может отличаться).

Устанавливаем Varnish

Выполняем команду:

sudo apt-get install varnish

После того, как Varnish установится, редактируем файл /etc/default/varnish, указываем порт 80 в DAEMON_OPTIONS (после параметра -a):

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

Настраиваем прокси на web приложения

Откройте VCL файл /etc/varnish/default.vcl и добавьте туда конфигурацию backend:

backend apache {
    .host = "127.0.0.1";
    .port = "8001";
}

backend example_nodejs {
    .host = "127.0.0.1";
    .port = "3000";
}

backend jenkins {
    .host = "127.0.0.1";
    .port = "8080";
}

Здесь я указал 3 backend-а и назначил им понятные мне названия. Далее указываем маршруты при помощи параметра sub vcl_recv:

sub vcl_recv {
    if(req.http.host == "example.com" || req.http.host == "www.example.com") {
        set req.backend = apache;
    }
    if(req.http.host == "nodejs.example.com" || req.http.host == "www.nodejs.example.com") {
        set req.backend = example_nodejs;
    }
    if(req.http.host == "ci.example.com" || req.http.host == "www.ci.example.com") {
        set req.backend = jenkins;
    }
}

Маршруты указывают куда необходимо отправлять запросы в зависимости от имени хоста. В моем примере, хост nodejs.example.com будет передаваться в backend example_nodejs, т.е. приложение, работающее на 127.0.0.1:3000.

Далее перезапускаем Varnish:

sudo service varnish restart

После этого все должно работать.

Если вам нужно запустить множество приложений NodeJS, можно использовать forever, либо через Upstart скрипт (актуально для Ubuntu). Инструкцию для запуска NodeJS приложений через Upstart можно найти здесь (англ.).

Источник — How to run Apache and NodeJS based sites on the same server with Varnish.

Lightgallery 1.4 Beta

Сегодня я обновил лайтбокс скрипт Lightgallery. Исправил некоторые ошибки, самая серьезная среди которых — пропадание оверлея в IE9. Шестая версия Internet Explorer больше не поддерживается. Также улучшена анимация с использованием requestAnimationFrame. Удалены опции speed и framesNumber, вместо них используется простая и понятная опция duration — если установить её в 1000, то анимация будет длиться одну секунду. Размер скрипта в сжатом виде уменьшился — теперь всего 8,5K.
Демо можно посмотреть здесь. Буду признателен за тестирование, замечания.

LightGallery 1.3

После некоторого перерыва, я выпустил новую версию LightGallery — скрипта-галереи в стиле lightbox. Основное отличие от других подобных скриптов состоит в том, что LightGallery не требует сторонних скриптов. Просто подключаете на веб-страницу, и все готово к работе.

Читать дальше >>

Функция trim в JavaScript

В JavaScript нет встроенной функции для удаления пробелов в начале и конце строки, как например в PHP, где для этого используется функция trim. Под пробелами здесь подразумеваются символы SPACE, TAB, перенос строки и многое другое. Для реализации этой функции в JavaScript как правило пользуются регулярными выражениями. Один из таких способов опубликован в моей базе знания, в котором используется довольно таки простое регулярное выражение: «/^\s+|\s+$/».

Как оказалось, такое выражение будет работать правильно не во всех браузерах, поскольку символ «\s» реализован в них по-разному и некоторые символы не трактуются как «пробельные». Подробней об этом можете прочитать здесь (англ.). Из этого же источника привожу результаты сравнительных тестов, показывающих различие в работе со строками в различных браузерах.

Читать дальше >>

Сжатие JavaScript/CSS файлов при помощи Phing

В последнее время я имел возможность поработать с Phing — программой для сборки приложений. С её помощью можно копировать файлы приложения, заменять в них текст (например параметры конфигурационных файлов), и многое другое. Помимо прочего, можно самому создать подключаемые плагины, которые будут выполнять нужные нам задания. Мне нужно было при копировании таблиц стилей и скриптов выполнять их сжатие при помощи YUI компрессора, и я нашел отличное решение для этого.

Читать дальше >>

Страница 1 из 2312345678910»...Последняя »
Дмитрий Ищенко © 2007 - 2013