Nginx eval module (v 1.0.1)

rus eng

Модуль для веб-сервера nginx, преобразующий ответ от проксированного веб-сервера или memcached в значения переменных.

Описание

Модуль выполняет блок конфигурации заданный директивой eval и преобразует ответ от этого блока в значения переменных. Блок конфигурации обязан содержать директивы memcached_pass или proxy_pass.

Директивы конфигурации


синтаксис: eval $<имя переменной 1> [[ $<имя переменной 2> ] ... ] {<блок>}
значение по-умолчанию: не применимо
строгость: обязательная
контекст: main, server, location

Задает имена переменных, в значения которых будет преобразован ответ, и блок конфигурации, описывающий как получить ответ. Блок конфигурации обязан содержать директивы memcached_pass или proxy_pass. Максимальное число переменных равно 8. Блок eval выполняется перед модулем rewrite, таким образом вся конфигурация модуля rewrite, которую необходимо выполнить до блока eval, необходимо указывать внутри блока eval. Пример:

            location / {
                set $foo bar;

                eval $var {
                    # $foo пуст
                    proxy_pass http://backend/$foo;
                }
            }
		
            location / {
                eval $var {
                    set $foo bar;
                    # $foo равен 'bar'
                    proxy_pass http://backend/$foo;
                }
            }
		

По той же причине блок eval неэффективен внутри блоков if и limit_except, однако блоки if и limit_except эффективны внутри блока eval.

Преобразование ответа в значения переменных управляется типом содержимого ответа (значением заголовка Content-Type). Модуль распознает следующие mime-типы:

Чтобы переопределить тип содержимого, возвращаемого проксированным веб-сервером или memcached, необходимо использовать директиву eval_override_content_type.


синтаксис: eval_escalate <on/off>
значение по-умолчанию: off
строгость: необязательная
контекст: main, server, location

Разрешает эскалацию ошибок в блоке eval на более высокий уровень конфигурации. Например, конфигурация:

            location / {
                eval_escalate off;

                eval $var {
	            set $foo bar;

                    return 403;
                }

                return 405;
            }
		

возвращает ошибку HTTP 405, в то же время, конфигурация:

            location / {
                eval_escalate on;

                eval $var {
                    set $foo bar;

                    return 403;
                }

                return 405;
            }
		

возвращает ошибку HTTP 403.


синтаксис: eval_override_content_type <mime-тип>
значение по-умолчанию: нет
строгость: необязательная
контекст: main, server, location

Указвает тип содержимого, который будет использован вместо типа содержимого, предоставленного memcached или проксированным сервером.


Пример конфигурации

eval $var {
    set $memcached_key $1;
    memcached_pass 192.168.2.1;
}
		

Скачать

Последняя версия 1.0.1:
ФайлMD5SHA1
nginx_eval_module-1.0.1.tar.gz570b6f7e40e489c5846ffca725226edbfa1ceef301a83f038ed0fa1ea5634be3c600002d
nginx_eval_module-1.0.1.zipcfda9250f5b596714312a78e314fc94e450e7194c4b226be7a1fdd2285e302d14729bb6f
или перейти в
каталог загрузки

Репозиторий

http://github.com/vkholodkov/nginx-eval-module/tree/master

Как использовать

Скачать исходники по одной из ссылок выше. Распаковать архив:

tar xvzf nginx_eval_module-1.0.1.tar.gz

Сконфигурировать nginx с дополнительным модулем:

cd <путь к исходникам nginx>
./configure --add-module=<путь к исходникам модуля>
make
make install

Nginx

Описанный модуль является дополнением к веб-серверу nginx. nginx -- это веб-сервер разработанный Игорем Сысоевым.

Лицензия

Лицензия описанного модуля BSD Вы должны были получить копию лицензии вместе с исходными кодами модуля. В случае, если Вы не согласны с условиями лицензии, Вы обязаны удалить все копии исходных кодов модуля на Ваших компьютерах, а так же двоичные файлы скомпилированные из этих исходных кодов.

Связаться с автором

Valery Kholodkov valery+nginx@grid.net.ru
Пожалуйста, используйте расширение адреса при составлении письма мне.


Copyright (C) 2009 Valery Kholodkov