1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/laozi2-nginx-tcp-lua-module

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 46 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 03:39 dc9cd9a

listen

syntax: listen [ip:]port Бэклог = число Рквбуф = размер Сндбуф = размер Деферред Бинд ССЛ Со_кипэйвэл = вкл | выкл | [кипэйвдл: кипнтвл: кипнт]

По умолчанию: слушать :0;

Контекст: сервер

Пример:

    слушать 127.0.0.1:110;
    слушать *:110;
    слушать 110; # то же, что и *:110

Задаёт адрес и порт для IP, на котором сервер будет принимать запросы. Сейчас поддерживается только IPv4.

Один server{} может иметь разные адреса IP. Но в одном server{} можно задать только один указанный порт.

Протокол

Синтаксис: протокол имя_протокола;

По умолчанию: -;

Контекст: сервер

Пример:

    протокол демо;

Имя_протокола должно быть определено в реализованном модуле, таком как ngx_tcp_demo_module. В одном server{} может быть только одно указанное имя_протокола.

Рид_тайм_аут

Синтаксис: рид_тайм_аут время;

По умолчанию: 60 с;

Контекст: TCP, сервер

Пример:

рид_тайм_аут 60с;

Устанавливает тайм-аут для чтения всех данных протокола.

Сенд_тайм_аут

Синтаксис: сенд_тайм_аут время;

По умолчанию: 60 с;

Контекст: TCP, сервер

Пример:

сенд_тайм_аут 60с;

Устанавливает тайм-аут для передачи ответа клиенту. Тайм-аут устанавливается только между двумя последовательными операциями записи, а не для передачи всего ответа. Если клиент не получит ничего в течение этого времени, соединение будет закрыто.

Кипэйвэл_тайм_аут

Синтаксис: кипэйвэл_тайм_аут время;

По умолчанию: 6000 с;

Контекст: TCP, сервер

Пример:

кипэйвэл_тайм_аут 6000с;

Устанавливает тайм-аут, в течение которого клиентское соединение keep-alive будет оставаться открытым на стороне сервера. Нулевое значение отключает клиентские соединения keep-alive. (TODO: разрешить никогда не закрывать клиентское соединение)

Коннекшн_пул_сайз

Синтаксис: коннекшн_пул_сайз размер;

По умолчанию: 0,5 к;

Контекст: TCP, сервер

Пример:

коннекшн_пул_сайз ;

Позволяет точно настроить выделение памяти для каждого соединения. Эта директива оказывает минимальное влияние на производительность и обычно не должна использоваться.

Сешн_пул_сайз

Синтаксис: сешн_пул_сайз размер;

По умолчанию: 1 к;

Контекст: TCP, сервер

Пример:

сешн_пул_сайз ;

Позволяет точно настроить выделение памяти для каждой сессии. Эта директива оказывает минимальное влияние на производительность и обычно не должна использоваться. Оптимальное значение немного больше средней длины принимаемых данных, чтобы можно было полностью использовать память и минимизировать время выделения.

Клиент_макс_боди_сайз

Синтаксис: клиент_макс_боди_сайз размер;

По умолчанию: 1 к;

Контекст: TCP, сервер

Пример:

клиент_макс_боди_сайз ;

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

Эррор_лог

Синтаксис: эррор_лог файл | stderr | [debug | info | notice | warn | error | crit | alert | emerg];

По умолчанию: эррор_лог логс/эррор.лог эррор;

Контекст: main, TCP, сервер

Пример:

эррор_лог логс/эррор.лог эррор;
# или в tcp{},server{} ниже: 
эррор_лог логс/эррор_tcp.лог дебг_tcp; 

Настраивает ведение журнала. 'дебг_tcp' можно использовать как 'дебг_http'.

Энлог

Синтаксис: энлог локальный_ип:локальный_порт удалённый_ип:удалённый_порт;

По умолчанию: —;

Контекст: main, TCP, сервер

Пример:

эррор_лог логс/эррор.лог эррор;
энлог 0.0.0.0:5001 0.0.0.0:5151; # энлог должен быть установлен после эррор_лога.

Настраивает IP-адрес для поддержки ведения журнала на UDP-сервере журналов.

Аллов

Синтаксис: аллов ип | all;

По умолчанию: —;

Контекст: TCP, сервер

Пример:

аллов 127.0.0.1;
аллов 127.0.0.0/24;
аллов all;

Разрешает доступ для указанной сети или адреса. Правила проверяются. Запрещает доступ для указанной сети или адреса. Правила проверяются по очереди, пока не будет найдено первое соответствие.

Вернуться к TOC

Конфигурирует серверы имён, используемые для разрешения имён вышестоящих серверов в адреса. По умолчанию nginx кэширует ответы, используя значение TTL ответа. Необязательный параметр valid позволяет переопределить его.

Вернуться к TOC

Устанавливает тайм-аут для разрешения имени.

Вернуться к TOC

Определяет формат журнала. Формат журнала может содержать общие переменные и переменные, существующие только во время записи в журнал:

  • $remote_addr — IP-адрес клиента.
  • $time_local — местное время в формате Common Log Format, «28/Sep/1970:12:00:00 +0600».
  • $time_iso8601 — местное время в стандарте ISO 8601, «1970-09-28T12:00:00+06:00».
  • $msec — время в секундах с разрешением в миллисекундах на момент записи в журнал.
  • $request_time — время обработки запроса в секундах с разрешением в миллисекундах; время, прошедшее между первым чтением байтов от клиента и записью в журнал после отправки последних байтов клиенту.
  • $connection — серийный номер соединения.
  • $connection_requests — текущее количество запросов, сделанных через соединение.
  • $bytes_sent — количество отправленных клиенту байтов.
  • $protocol — текущее имя протокола.

Вернуться к TOC

Задаёт путь и формат для буферизованной записи в журнал. На одном уровне можно указать несколько журналов.

Вернуться к TOC

Настраивает IP-адрес для поддержки ведения журнала на UDP-сервере журналов.

Вернуться к TOC

См. http://nginx.org/en/docs/http/ngx_http_ssl_module.html.

Вернуться к TOC

См. http://nginx.org/en/docs/http/ngx_http_ssl_module.html.

Вернуться к TOC

См. http://nginx.org/en/docs/http/ngx_http_ssl_module.html.

Вернуться к TOC

См. http://nginx.org/en/docs/http/ngx_http_ssl_module.html.

Вернуться к TOC

См. http://nginx.org/en/docs/http/ngx_http_ssl_module.html.

Вернуться к TOC

См. http://nginx.org/en/docs/http/ngx_http_ssl_module.html. Синтаксис: process_by_lua lua-script-str;

По умолчанию: -

Контекст: сервер

Пример:

process_by_lua 'ngx.exit()';

Выполняет строку кода Lua, указанную в , для запросов каждого соединения. Код Lua может выполнять вызовы API и выполняется как новая порождённая сопрограмма в независимой глобальной среде (т. е. в «песочнице»).

Вернуться к TOC

process_by_lua_file

Синтаксис: process_by_lua_file path-to-lua-script-file;

По умолчанию: -

Контекст: сервер

Пример:

process_by_lua_file 'conf/test.lua';

Эквивалентен process_by_lua, за исключением того, что файл, указанный в , содержит код Lua или байт-код Lua/LuaJIT, который должен быть выполнен.

Вернуться к TOC

lua_socket_connect_timeout

Синтаксис: lua_socket_connect_timeout time;

По умолчанию: 60 с;

Контекст: tcp, сервер

Пример:

lua_socket_connect_timeout 5;

Эта директива управляет значением таймаута по умолчанию, используемым в методе connect объекта сокета TCP, и может быть переопределена методом settimeout.

Аргумент

Вернуться к TOC

lua_socket_send_lowat

Синтаксис: lua_socket_send_lowat size;

По умолчанию: 0;

Контекст: TCP, сервер

Пример:

lua_socket_send_lowat 0;

Управляет значением lowat (низкий уровень воды) для буфера отправки cosocket.

Вернуться к TOC

lua_socket_pool_size

Синтаксис: lua_socket_pool_size size;

По умолчанию: 30;

Контекст: TCP, сервер

Пример:

lua_socket_pool_size 10;

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

Когда пул соединений превышает доступный предельный размер, наименее недавно использованное (простаивающее) соединение, уже находящееся в пуле, будет закрыто, чтобы освободить место для текущего соединения.

Обратите внимание, что пул соединений cosocket относится к каждому отдельному рабочему процессу nginx, а не к экземпляру сервера nginx, поэтому указанный здесь предел размера также применяется к каждому отдельному процессу рабочего процесса nginx.

Вернуться к TOC

lua_check_client_abort

Синтаксис: lua_check_client_abort on|off;

По умолчанию: off;

Контекст: TCP, сервер

Пример:

lua_check_client_abort on;

Эта директива контролирует, следует ли проверять преждевременное прерывание клиентского соединения.

Вернуться к TOC

lua_shared_dict

Синтаксис: lua_shared_dict name size;

По умолчанию: —;

Контекст: TCP

Пример:

lua_shared_dict dogs 10m;

Объявляет зону общей памяти, , которая будет служить хранилищем для словаря shm на основе Lua ngx.shared..

Зоны общей памяти всегда совместно используются всеми рабочими процессами nginx в текущем экземпляре сервера nginx.

Аргумент принимает такие единицы измерения, как k и m. Не менее 8k;

Вернуться к TOC

lua_regex_cache_max_entries

Синтаксис: lua_regex_cache_max_entries num;

По умолчанию: 1024;

Контекст: TCP

Пример:

lua_shared_dict dogs 10m;

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

Регулярные выражения, используемые в ngx.re.match, ngx.re.gmatch, ngx.re.sub и ngx.re.gsub, будут кэшироваться в этом кэше, если указан флаг компиляции o (т.е. флаг компиляции один раз).

Вернуться к TOC

lua_regex_match_limit

Синтаксис: lua_regex_match_limit num;

По умолчанию: 0;

Контекст: TCP

Пример:

lua_shared_dict dogs 10m;

Задаёт «предел соответствия», используемый библиотекой PCRE при выполнении API ngx.re. Чтобы процитировать страницу руководства PCRE, «предел ... имеет эффект ограничения объёма обратного отслеживания, которое может иметь место».

При достижении предела появляется ошибка:

... pcre_exec() failed: -8 будет возвращено функциями API ngx.re в области Lua.

При установке ограничения на 0 используется «предел соответствия по умолчанию» при компиляции библиотеки PCRE. И это значение по умолчанию для этой директивы.

Вернуться к TOC

demo_echo

Синтаксис: demo_echo str;

По умолчанию: -;

Контекст: сервер

Пример:

demo_echo "hello world";

Эта директива используется для ngx_tcp_demo_module, который определяет протокол эхо. Поток запроса содержит 4 байта заголовка, содержащих длину данных запроса. Когда задана строка demo_echo, сервер ответит 4-байтовым заголовком, содержащим длину данных ответа, и строкой demo_echo. Если эта директива не задана, данные тела ответа являются данными тела запроса.

Вернуться к TOC

Пример кода для ngx_tcp_lua_module

    local client_sock = ngx.socket.tcp()
    client_sock:settimeout(5000,1000,3000)

    local data = "hello world 1234567890"
    local data_len = string.len(data)
    local data_len_h = netutil.htonl(data_len)
    local req_data = netutil.packint32(data_len_h) .. data


    local upstream_test = function(u)
        local ret,err = u:connect("127.0.0.1",8000,"127.0.0.1_8000_1");
        local reuse = u:getreusedtimes()
        ngx.log(ngx.INFO,"connect : "..tostring(ret).." "..tostring(err).." "..tostring(reuse))
        if not ret then 
             return
        end

        ret,err = u:send(req_data)
        ngx.log(ngx.INFO,"send : "..tostring(ret).." "..tostring(err))
        if not ret then
            return
        end

        local data,err = u:receive(4,nil)
        if use_log then ngx.log(ngx.INFO,"receive : "..tostring(data).." "..tostring(err)) end
        if not data then
            return
        end

        local totoal_len = netutil.unpackint32(string.sub(data,1,4))
        ngx.log(ngx.INFO,"totoal_len : "..tostring(totoal_len))

        local data,err = u:receive(totoal_len - 4,nil)
        ngx.log(ngx.INFO,"receive again: ["..tostring(data).."] "..tostring(err))
        if not data then
             return
        end

        if totoal_len - 4 ~= #data then
             ngx.log(ngx.INFO,"receive len not match")
             return
        end
        u:setkeepalive()
    end


    local test_shm = function()
         local key = "x"
         local value = "hello world"
         local dogs = ngx.shared.db_lock
         local shm_value = dogs:get(key)

         if not shm_value then
             local succ, err, forcible = dogs:set(key,value,10000)
             ngx.log(ngx.INFO,tostring(succ)..","..tostring(err)..","..tostring(forcible))
         end

         local shm_value = dogs:get(key)
         ngx.log(ngx.INFO,tostring(shm_value))
    end


    while true do
         local data,r2,r3 = ngx.receive(10,6)

         ngx.say("receive ret "..tostring(data).." "..tostring(r2).." "..tostring(r3) .. ","..collectgarbage("count"))
         if not data then
              ngx.say("exit")
              ngx.exit()
         end

       --ngx.sleep(5)

       --upstream_test(client_sock)

       test_shm()

       --collectgarbage()

        ngx.wait_next_request()
    end

Вернуться к TOC

Nginx API для Lua

Синтаксис: ngx.wait_next_request()

Контекст: process_by_lua*

Аргументы: нет

Возвращает: нет

Пример:

while true do
    --process request
    --...
    ngx.wait_next_request()
end

Этот метод разделяет каждый запрос в одном соединении, сбрасывает буферы чтения/записи и переводит соединение в состояние ожидания. Этот метод является синхронной операцией и на 100% неблокирующей. Он вернётся при поступлении нового запроса или завершит выполнение кода Lua при истечении времени ожидания keepalive.

ngx.exit

Синтаксис: ngx.exit()

Контекст: process_by_lua*

Аргументы: нет

Возвращает: нет

Пример:


Этот метод завершает выполнение кода Lua и закрывает текущее клиентское соединение.

ngx.sleep

Синтаксис: ngx.sleep(время-в-секундах)

Контекст: process_by_lua*

Аргументы: время-в-секундах: спит указанное количество секунд без блокировки. Можно указать разрешение по времени до 0,001 секунды (то есть одну миллисекунду).

Возвращает: нет

Пример:

ngx.sleep(1.5)

ngx.utctime

Синтаксис: str = ngx.utctime()

Контекст: init_by_lua*, process_by_lua*

Аргументы: нет

Возвращает: str: текущая временная метка (в формате гггг-мм-дд чч:мм:сс) кэшированного времени nginx (без участия системного вызова, в отличие от функции os.date в Lua).

Пример:


Это время UTC.

ngx.localtime

Синтаксис: str = ngx.localtime()

Контекст: init_by_lua*, process_by_lua*

Аргументы: нет

Возвращает: str: возвращает текущую временную метку (в формате гггг-мм-дд чч:мм:сс) кэшированного времени nginx (без участия системного вызова, в отличие от функции os.date в Lua).

Пример:


Это местное время.

ngx.time

Синтаксис: secs = ngx.time()

Контекст: init_by_lua*, process_by_lua*

Аргументы: нет

Возвращает: secs: возвращает прошедшее количество секунд с начала эпохи для текущей временной метки из кэшированного времени nginx (без участия системного вызова, в отличие от библиотеки дат в Lua).

Пример:


Обновления кэша времени Nginx можно принудительно выполнить, вызвав сначала ngx.update_time.

ngx.now

Синтаксис: secs = ngx.now()

Контекст: init_by_lua*, process_by_lua*

Аргументы: нет

Возвращает: secs: возвращает число с плавающей запятой для прошедшего времени в секундах (включая миллисекунды как десятичную часть) с начала эпохи для текущей временной метки из кэшированного времени nginx (без участия системного вызова, в отличие от библиотеки дат в Lua).

Пример:


Обновления кэша времени Nginx можно принудительно выполнить, вызвав сначала ngx.update_time.

ngx.today

Синтаксис: str = ngx.today()

Контекст: init_by_lua*, process_by_lua*

Аргументы: нет

Возвращает: str: возвращает текущую дату (в формате гггг-мм-дд) из кэшированного времени nginx (без участия системного вызова, в отличие от библиотеки дат в Lua).

Пример:


Это местное время.

ngx.tcp_time

Синтаксис: str = ngx.tcp_time(sec)

Контекст: init_by_lua*, process_by_lua*

Аргументы: sec: временная метка в секундах (как те, что возвращаются из ngx.time).

Возвращает: str: возвращает форматированную строку, которую можно использовать в качестве заголовка времени HTTP.

Пример:

ngx.say(ngx.http_time(1290079655))
 -- yields "Thu, 18 Nov 2010 11:27:35 GMT"

ngx.parse_tcp_time

Синтаксис: sec = ngx.parse_http_time(str)

Контекст: init_by_lua*, process_by_lua*

Аргументы: str: форматированная строка, которую можно использовать в качестве заголовка времени HTTP.

Возвращает: sec: временная метка в секундах (как те, которые возвращаются из ngx.time). Пример:

local time = ngx.parse_http_time("Thu, 18 Nov 2010 11:27:35 GMT")
if time == nil then
    ...
end

Разбор строки времени HTTP (возвращаемой ngx.http_time) в секунды. Возвращает секунды или nil, если входная строка имеет неправильный формат.

Вернуться к TOC

ngx.update_time

Синтаксис: ngx.update_time()

Контекст: init_by_lua*, process_by_lua*

Аргументы: нет

Возвращает: нет

Пример:

Принудительно обновляет текущий кэш времени Nginx. Этот вызов включает системный вызов и поэтому имеет некоторые накладные расходы, поэтому не злоупотребляйте им.

Вернуться к TOC

ngx.start_time

Синтаксис: secs =ngx.start_time()

Контекст: process_by_lua*

Аргументы: нет

Возвращает: число с плавающей запятой, представляющее метку времени (включая миллисекунды в качестве десятичной части), когда был создан текущий запрос.

Пример:

Вернуться к TOC

ngx.socket.tcp

Синтаксис: tcpsock = ngx.socket.tcp()

Контекст: process_by_lua*

Аргументы: нет

Возвращает: tcpsock: Создаёт и возвращает объект TCP (также известный как один из типов объектов «cosocket»).

Пример:

Для этого объекта поддерживаются следующие методы:

Он предназначен для совместимости с API TCP библиотеки LuaSocket, но на 100% неблокирующий. Кроме того, мы представляем несколько новых API для обеспечения дополнительных функций.

Объект cosocket, созданный этой функцией API, имеет точно такой же срок службы, что и обработчик Lua, создающий его. Поэтому никогда не передавайте объект cosocket другому обработчику Lua (включая функции обратного вызова ngx.timer) и никогда не делитесь объектом cosocket между различными запросами NGINX.

Для каждого соединения, лежащего в основе объекта cosocket, если вы явно не закроете его (через close) или не вернёте его обратно в пул соединений (через setkeepalive), он автоматически закрывается при возникновении одного из следующих двух событий:

  • завершение текущего обработчика запросов, или
  • сбор объекта cosocket Lua GC.

Фатальные ошибки в операциях cosocket всегда автоматически закрывают текущее соединение (обратите внимание, что ошибка тайм-аута чтения является единственной ошибкой, которая не является фатальной), и если вы вызовете close для закрытого соединения, вы получите ошибку «closed».

После создания cosocket значение по умолчанию connect timedout устанавливается значением, заданным lua_socket_connect_timeout, значение по умолчанию send timedout — значением, заданным send_timeout, а значение по умолчанию read timedout — значением, заданным read_timeout. И это можно изменить с помощью tcpsock:settimeout в любое время.

Вернуться к TOC

tcpsock:connect

Синтаксис: ok, err = tcpsock:connect(host, port, pool_name)

Контекст: process_by_lua*

Аргументы:

host: строковый тип, требуется IP-адрес или доменное имя
port: числовой тип, [0,65536]
pool_name: укажите собственное имя для используемого пула соединений. Если опущено, то имя пула соединений будет сгенерировано из шаблона строки "<host>:<port>"

Возвращает: ok, err возможные значения:

1,nil : подключение выполнено успешно.
nil,<error msg> : не удалось.

Пример:

local ok,err = tcpsock:connect("127.0.0.1", 80, "httphost")

Вызов этого метода для уже подключённого объекта сокета приведёт к закрытию исходного подключения.

Вернуться к TOC Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

tcpsock:receive

Синтаксис: ok, err = tcpsock:receive()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

tcpsock:receive_http

Синтаксис: ok, err = tcpsock:receive_http()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

tcpsock:send

Синтаксис: ok, err = tcpsock:send()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

tcpsock:close

Синтаксис: ok, err = tcpsock:close()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

tcpsock:setoption

Синтаксис: ok, err = tcpsock:setoption()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

tcpsock:settimeout

Синтаксис: ok, err = tcpsock:settimeout()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

tcpsock:getreusedtimes

Синтаксис: ok, err = tcpsock:getreusedtimes()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

tcpsock:setkeepalive

Синтаксис: ok, err = tcpsock:setkeepalive()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

ngx.new_ssl_ctx

Синтаксис: ok, err = ngx.new_ssl_ctx()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

ngx.log

Синтаксис: ok, err = ngx.log()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

ngx.print

Синтаксис: ok, err = ngx.print()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

ngx.nlog

Синтаксис: ok, err = ngx.nlog()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

nlog:send

Синтаксис: ok, err = nlog:send()

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

ngx.re.find

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxrefind

Вернуться к TOC

ngx.re.match

Синтаксис: captures, err = ngx.re.match(subject, regex, options?, ctx?, res_table?)

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

 local m, err = ngx.re.match("hello, 1234", "[0-9]+")
 if m then
     -- m[0] == "1234"

 else
     if err then
         ngx.log(ngx.ERR, "error: ", err)
         return
     end

     ngx.say("match not found")
 end

 local m, err = ngx.re.match("hello, 1234", "([0-9])[0-9]+")
 -- m[0] == "1234"
 -- m[1] == "1"

Ищет соответствие строки регулярному выражению regex с опциями options. Возвращается только первое совпадение или nil, если совпадений нет. В случае ошибки возвращается err. Ошибки, такие как неправильное регулярное выражение или превышение предела стека PCRE, будут возвращены nil и строка с описанием ошибки.

При обнаружении совпадения возвращается таблица Lua captures, где captures[0] содержит всю сопоставляемую подстроку, а captures[1] — первое захваченное значение в скобках, captures[2] — второе и так далее.

Вернуться к TOC

ngx.re.gmatch

Синтаксис: iterator, err = ngx.re.gmatch(subject, regex, options?)

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

ngx.re.sub

Синтаксис: iterator, err = ngx.re.sub(subject, regex, options?)

Контекст: process_by_lua*

Аргументы:

Возвращает: ok, err возможные значения:

Пример:

Вернуться к TOC

ngx.re.gsub

Синтаксис: iterator, err = ngx.re.gsub(subject, regex, options?)

Контекст: process_by_lua*

Аргументы:

Возвращает: iterator, err возможные значения:

Пример:

Вернуться к TOC

ngx.decode_base64

См. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxdecode_base64.

Вернуться к TOC

ngx.encode_base64

См. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxencode_base64.

Вернуться к TOC

ngx.md5_bin

См. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxmd5_bin.

Вернуться к TOC

ngx.md5

См. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxmd5.

Вернуться к TOC

ngx.sha1_bin

См. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxsha1_bin.

Вернуться к TOC

ngx.crc32_short

См. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxcrc32_short.

Вернуться к TOC

ngx.crc32_long

См. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxcrc32_long.

Вернуться к TOC

ngx.hmac_sha1

См. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxhmac_sha1.

Вернуться к TOC

ngx.escape_uri

См. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxescape_uri.

Вернуться к TOC

ngx.quote_sql_str

См. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxquote_sql_str.

Вернуться к TOC

ngx.shared.DICT

Получение объекта словаря Lua на основе общей памяти для зоны общей памяти с именем. Определён с помощью директивы lua_shared_dict.

Зоны общей памяти всегда являются общими для всех рабочих процессов nginx в текущем экземпляре сервера nginx.

У результирующего объекта dict есть следующие методы:

  • get;
  • get_stale;
  • set;
  • safe_set;
  • add;
  • safe_add;
  • replace;
  • delete;
  • incr;
  • flush_all;
  • flush_expired;
  • get_keys.

Вернуться к TOC

ngx.shared.DICT.get

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictget.

Вернуться к TOC

ngx.shared.DICT.get_stale

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictget_stale.

Вернуться к TOC

ngx.shared.DICT.set

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictset.

Вернуться к TOC

ngx.shared.DICT.safe_set

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictsafe_set.

Вернуться к TOC

ngx.shared.DICT.add

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictadd.

Вернуться к TOC

ngx.shared.DICT.safe_add

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictsafe_add.

Вернуться к TOC

ngx.shared.DICT.replace

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictreplace.

Вернуться к TOC

ngx.shared.DICT.delete

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictdelete.

Вернуться к TOC

ngx.shared.DICT.incr

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictincr.

Вернуться к TOC

ngx.shared.DICT.flush_all

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictflush_all.

Вернуться к TOC

ngx.shared.DICT.flush_expired

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictflush_expired.

Вернуться к TOC

ngx.shared.DICT.get_keys

см. https://github.com/openresty/lua-nginx-module/blob/master/README.markdown#ngxshareddictget_keys.

Вернуться к TOC

Данный текст относится к технической направленности. Основной язык текста — английский.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/laozi2-nginx-tcp-lua-module.git
git@api.gitlife.ru:oschina-mirror/laozi2-nginx-tcp-lua-module.git
oschina-mirror
laozi2-nginx-tcp-lua-module
laozi2-nginx-tcp-lua-module
master