Раньше приходилось заново копировать после каждого обрыва. Но потом придумали механизм, основанный на bookmark’ах, который позволяет продолжить копирование с места разрыва.
Раньше приходилось заново копировать после каждого обрыва. Но потом придумали механизм, основанный на bookmark’ах, который позволяет продолжить копирование с места разрыва.
Сразу скажу, код не мой, а нашёл его в рассылке nginx.ru, но что бы не потерять, оформил в виде заметки
Данный код использует lua и матчит header по слову Foo
content_by_lua_block { local h = ngx.req.get_headers() for k, v in pairs(h) do if k == k:match("([%w].Foo.*)") then ngx.header[k] = v end end ngx.say('headers with Foo are captured'); }
Вводные данные: 2 сервера Linux связаны между собой через OpenVPN туннель. Нужно для части клиентов за одним из концов VPN’a завернуть весь трафик в туннель, то есть, что бы они выходили в интернет не через свой GW, а через удалённый GW, пройдя через VPN.
UPD. В данной схеме есть нюанс: она будет работать, если клиентские машины находятся за хостом, который является OpenVPN-клиентом. В обратном случае, пакеты просто не будут покидать хост, хотя через tcpdump вы их будете видеть. Связано это с особенностями самого OpenVPN’a. Пока не нашёл как это можно решить. Как workaround, можно либо изменить роли клиент-сервер, либо использовать простой туннель или другой тип VPN’a.
iroute в OpenVPN нужен для того, что бы добавлять маршруты в подсеть клиентов, когда они подключаются. Данный параметр прописывается исключительно в CCD (client-config-dir). Но есть нюанс: обязательно с iroute нужно прописывать route в конфиге server.conf. Да, про это упомянуто в документации, но не все ёё внимательно читают
Remember that you must also add the route to the system routing table as well (such as by using the –route directive). The reason why two routes are needed is that the –route directive routes the packet from the kernel to OpenVPN. Once in OpenVPN, the –iroute directive routes to the specific client.
То есть, если нужно добавить клиентскую подсеть 192.168.10.0/24, то правильно сделать так:
ccd/client:
iroute 192.168.10.0 255.255.255.0
server.conf:
route 192.168.10.0 255.255.255.0
Иногда бывает ситуация, когда нужно в location’e написать regexp с nonASCII символами. Тогда на помощь приходит URL encode. Нюанс в том, что вместо % (процент) нужно использовать \x (слеш + “х”). Итого, если в браузере URL выглядит так
test%20test
то в nginx.conf это будет так:
test\x20test
Вот как полностью выглядит сообщение об ошибке:
Connection timed out H=alt4.gmail-smtp-in.l.google.com [142.250.157.26]:25 DT=12m19s: SMTP timeout after sending data block (452056 bytes written)
Примечание: число в скобках и сервер гугла может быть любой.
Заметка написана, как обновление статьи, поскольку в новых ядрах произошли некоторые изменения. По сути, здесь будут выдержки из документации по управлению питанием для ядра Linux.
Ниже будут представлены разного рода ограничения для количественной отправки. На сегодняшний день, это одна из необходимых мер для борьбы со спамерами.
Внезапно (на самом деле нет, oracle предупреждает, что такие библиотеки помечены как legacy и скоро будут obsoleted), с определённого SRU Solaris прекратил поддерживать старые библиотеки, от которых зависит ПО, собранное вручную. Итог – нельзя обновиться до этого и выше SRU без удаления этого ПО. Как же быть? Выход один – перелить пакеты-зависимости из репозитория solaris в свой, предварительно незначительно изменив название пакетов и их зависимостей.
Начну в порядке от самой простой реализации до самой сложной.