Согласователь работы кондиционеров… в Кропоткине: 63-товара: бесплатная доставка [перейти]
Партнерская программаПомощь
Кропоткин
Каталог
Каталог Товаров
Одежда и обувьОдежда и обувь
СтройматериалыСтройматериалы
Текстиль и кожаТекстиль и кожа
Здоровье и красотаЗдоровье и красота
ПромышленностьПромышленность
Продукты и напиткиПродукты и напитки
Детские товарыДетские товары
ЭлектротехникаЭлектротехника
Дом и садДом и сад
Сельское хозяйствоСельское хозяйство
Приборы и автоматикаПриборы и автоматика
Все категории
ВходИзбранное
14 966
Адаптер-согласователь BAG Daikin R04084134740 (BAG) Производитель: Daikin
ПОДРОБНЕЕ11 000
Haier Согласователь работы YCJ-A002 Производитель: Haier, Класс энергопотребления: A++
ПОДРОБНЕЕ17 483
Согласователь работы 2-х кондиционеров HAIER YCJ-RS002 (серия Leader, Lightera) Производитель:
ПОДРОБНЕЕ18 263
Согласователь работы 2-х кондиционеров Haier YCJ-RS002 Производитель: Haier, Режим работы:
ПОДРОБНЕЕ12 810
Модуль с согласователем Sinbo Модуль GSM в комплекте с СРК-2. 3 У Протокол связи Умного дома: GSM
ПОДРОБНЕЕ11 000
Согласователь работы Haier YCJ-A002 Производитель: Haier, Назначение: для кондиционера
ПОДРОБНЕЕ15 588
Согласователь работы кондиционеров CPK-DIM Производитель: Daichi, Режим работы: охлаждение
ПОДРОБНЕЕ11 000
Согласователь работы 2-х конд.YCJ-A002 YCJ-A002 Производитель: Haier
ПОДРОБНЕЕ12 120
Согласователь работы кондиционеров СРК-3.1У-3 (для трех кондиционеров)
ПОДРОБНЕЕ11 700
Согласователь работы 2-х конд.YCJ-A002 (серия LIGHTERA, ELEGANT) Производитель: Haier, Класс
ПОДРОБНЕЕ22 251
Согласователь работы 2-х кондиционеров HAIER YCJ-RS006 (серия LEADER, Coral) Производитель: Haier,
ПОДРОБНЕЕ10 800
Согласователь работы кондиционеров СРК-2.3У Производитель: Без бренда, Режим работы: охлаждение
ПОДРОБНЕЕБлок-ротацииSinbo Согласователь работы СРК-2. 1 У Бренд: Sinbo, Вес: 1000 г
ПОДРОБНЕЕ13 000
Адресная карта/Согласователь работы 2-х кондиционеров YCJ-A002
ПОДРОБНЕЕ10 039
Климат-Контроль НН Согласователь работы кондиционеров СРК-2.3У
ПОДРОБНЕЕ18 300
Haier YCJ-RS002 Согласователь работы 2-х кондиционеров Производитель: Haier, Дополнительные
ПОДРОБНЕЕ19 600
Согласователь работы 2-х конд.YCJ-RS002 (серия Leader, Lightera) Производитель: Haier
ПОДРОБНЕЕ30 300
Daikin СРК-М3-01 Производитель: Daikin, Режим работы: охлаждение
ПОДРОБНЕЕБлок управления ротацией и резервированием БУРР-1 М Тип: блок управления, Производитель: Mitsubishi
ПОДРОБНЕЕБУРР-1М согласователь работы кондиционеров Тип: блок управления, Назначение: для кондиционера
ПОДРОБНЕЕ10 445
Согласователь работы 2-х кондиционеров HAIER YCJ-A002 (серия LIGHTERA, Leader) Производитель:
ПОДРОБНЕЕ20 753
Haier YCJ-RS002 Согласователь работы 2-х конд Производитель: Haier
ПОДРОБНЕЕ10 800
Energolux БУРР-1М Согласователь работы кондиционеров Производитель: Energolux
ПОДРОБНЕЕСогласователь работы кондиционеров Климат-контроль НН СРК-2. 3 У Производитель: Климат-контроль НН
ПОДРОБНЕЕ21 500
Кондиционер Haier Согласователь работы 2-х кондиционеров YCJ-RS002 Haier Производитель: Haier
ПОДРОБНЕЕБез марки Согласователь работы кондиционеров СРК-3.1У (НС-1235599)
ПОДРОБНЕЕ29 700
Согласователь работы кондиционеров СРК-D
ПОДРОБНЕЕ10 800
Согласователь работы кондиционеров БУРР-1М Назначение: для кондиционера
ПОДРОБНЕЕСогласователь работы кондиционеров…
низкие цены, в наличии на складе, бесплатная доставка, гарантия 12 месяцев, сервисное обслуживание. Радиоизмерительные приборы.
Вся текстовая и графическая информация на сайте несет информативный характер. Цвет, оттенок, материал, геометрические размеры, вес, содержание, комплект поставки и другие параметры товара представленого на сайте могут изменяться в зависимости от партии производства и года изготовления. Более подробную информацию уточняйте в отделе продаж.
Ведущий интернет-магазин Западприбор — это огромный выбор измерительного оборудования по лучшему соотношению цена и качество. Чтобы Вы могли купить приборы недорого, мы проводим мониторинг цен конкурентов и всегда готовы предложить более низкую цену. Мы продаем только качественные товары по самым лучшим ценам. На нашем сайте Вы можете дешево купить как последние новинки, так и проверенные временем приборы от лучших производителей.
На сайте постоянно действует акция «Куплю по лучшей цене» — если на другом интернет-ресурсе (доска объявлений, форум, или объявление другого онлайн-сервиса) у товара, представленного на нашем сайте, меньшая цена, то мы продадим Вам его еще дешевле! Покупателям также предоставляется дополнительная скидка за оставленный отзыв или фотографии применения наших товаров.
В прайс-листе указана не вся номенклатура предлагаемой продукции. Цены на товары, не вошедшие в прайс-лист можете узнать, связавшись с менеджерами. Также у наших менеджеров Вы можете получить подробную информацию о том, как дешево и выгодно купить измерительные приборы оптом и в розницу. Телефон и электронная почта для консультаций по вопросам приобретения, доставки или получения скидки приведены возле описания товара. У нас самые квалифицированные сотрудники, качественное оборудование и выгодная цена.
Интернет магазин Западприбор — официальный дилер заводов изготовителей измерительного оборудования. Наша цель — продажа товаров высокого качества с лучшими ценовыми предложениями и сервисом для наших клиентов. Наш интернет магазинможет не только продать необходимый Вам прибор, но и предложить дополнительные услуги по его поверке, ремонту и монтажу. Чтобы у Вас остались приятные впечатления после покупки на нашем сайте, мы предусмотрели специальные гарантированные подарки к самым популярным товарам.
Вы можете оставить отзывы на приобретенный у нас прибор, измеритель, устройство, индикатор или изделие. Ваш отзыв при Вашем согласии будет опубликован на официальном сайте без указания контактной информации.
Интернет-магазин принимаем активное участие в таких процедурах как электронные торги, тендер, аукцион.
При отсутствии на официальном сайте в техническом описании необходимой Вам информации о приборе Вы всегда можете обратиться к нам за помощью. Наши квалифицированные менеджеры уточнят для Вас технические характеристики на прибор из его технической документации: инструкция по эксплуатации, паспорт, формуляр, руководство по эксплуатации, схемы. При необходимости мы сделаем фотографии интересующего вас прибора, стенда или устройства.
Описание на приборы взято с технической документации или с технической литературы. Большинство фото изделий сделаны непосредственно нашими специалистами перед отгрузкой товара. В описании устройства предоставлены основные технические характеристики приборов: номинал, диапазон измерения, класс точности, шкала, напряжение питания, габариты (размер), вес. Если на сайте Вы увидели несоответствие названия прибора (модель) техническим характеристикам, фото или прикрепленным документам — сообщите об этом нам — Вы получите полезный подарок вместе с покупаемым прибором.
При необходимости, уточнить общий вес и габариты или размер отдельной части измерителя Вы можете в нашем сервисном центре. Наши инженеры помогут подобрать полный аналог или наиболее подходящую замену на интересующий вас прибор. Все аналоги и замена будут протестированы в одной с наших лабораторий на полное соответствие Вашим требованиям.
Основная особенность нашего интернет магазина проведение объективных консультаций при выборе необходимого оборудования. У нас работают около 20 высококвалифицированных специалистов, которые готовы ответить на все ваши вопросы.
В технической документации на каждый прибор или изделие указывается информация по перечню и количеству содержания драгметаллов. В документации приводится точная масса в граммах содержания драгоценных металлов: золото Au, палладий Pd, платина Pt, серебро Ag, тантал Ta и другие металлы платиновой группы (МПГ) на единицу изделия. Данные драгметаллы находятся в природе в очень ограниченном количестве и поэтому имеют столь высокую цену. У нас на сайте Вы можете ознакомиться с техническими характеристиками приборов и получить сведения о содержании драгметаллов в приборах и радиодеталях производства СССР. Обращаем ваше внимание, что часто реальное содержание драгметаллов на 10-25% отличается от справочного в меньшую сторону! Цена драгметаллов будет зависить от их ценности и массы в граммах.
Мы предлагаем быструю международную доставку практически во все страны мира: Австралия (Australia), Австрия (Austria), Азербайджан, Албания (Albania), Алжир (Algeria), Ангилья, Ангола, Антигуа и Барбуда, Аргентина (Argentina), Аруба, Багамские острова, Бангладеш, Барбадос, Бахрейн, Белиз, Бельгия (Belgium), Бенин, Бермуды, Болгария (Bulgaria), Боливия, Бонайре, Синт-Э. и Саба, Босния и Герцеговина (Bosnia and Herzegovina), Ботсвана, Бразилия (Brazil), Британские Виргинские Острова, Бруней Даруссалам, Буркина Фасо, Бурунди, Бутан, Вьетнам (Vietnam), Вануату, Ватикан, Венесуэла, Армения, Габон, Гайана, Гаити, Гамия, Гамбия, Гана, Гватемала, Гвинея, Гибралтар, Гондурас, Гонконг, Гренада, Гренландия (Greenland), Греция (Greece), Грузия (Georgia), Дания (Denmark), Демократическая Республика Конго, Джерси, Джибути, Доминика, Доминиканская Республика, Эквадор, Эсватин, Эстония (Estonia), Эфиопия (Ethiopia), Египет (Egypt), Замбия, Зимбабве (Zimbabwe), Иордания Индонезия, Ирландия (Ireland), Исландия (Iceland), Испания (Spain), Италия (Italy), Кабо-Верде, Казахстан (Kazakhstan), Каймановы острова, Камбоджа, Камерун, Канада (Canada), Катар, Кения, Кыргызстан, Китай (China), Кипр (Cyprus), Кирибати, Колумбия (Colombia), Коморские острова, Конго, Корея (Республика) (Korea Rep. ), Коста-Рика, Кот-д’Ивуар, Куба, Кувейт, Кюрасао, Лаос, Латвия (Latvia), Лесото, Литва (Lithuania), Либерия, Ливан, Ливия, Лихтенштейн, Люксембург, Мьянма, Маврикий, Мавритания, Мадагаскар, Макао, Малави, Малайзия, Мали, Мальдивы, Мальта, Марокко (Morocco), Мексика (Mexico), Мозамбик, Молдова (Moldova), Монако, Монако, Намибия, Науру, Непал, Нигер, Нигерия (Nigeria), Нидерланды (Netherlands), Германия (Germany), Новая Зеландия (New Zealand), Новая Каледония, Норвегия (Norway), ОАЭ (UAE), Оман, Острова Кука, Пакистан, Палестина, Панама, Папуа Новая Гвинея, Парагвай, Перу, Южная Африка, Польша (Poland), Португалия (Portugal), Республика Чад, Руанда, Румыния (Romania), Сальвадор, Самоа, Сан-Марино, Саудовская Аравия (Saudi Arabia), Свазиленд, Сейшельские острова, Сенегал, Сент-Винсент и Гренадины, Сент-Китс и Невис, Сент-Люсия, Сербия (Serbia), Сингапур (Singapore), Синт-Мартен, Словакия (Slovakia), Словения (Slovenia), Соломоновые острова, Соединенное Королевство Великобритании и Северной Ирландии (United Kingdom of Great Britain and Northern Ireland), Судан, Суринам, Восточный Тимор (Тимор-Лешти), США (USA), Сьерра-Леоне, Таджикистан, Тайвань (Taiwan), Таиланд (Thailand), Танзания (Объединенная Республика), Того, Тонга, Тринидад и Тобаго, Тувалу, Тунис (Tunisia), Турция (Turkey), Туркменистан, Уганда, Венгрия (Hungary), Узбекистан, Уругвай, Фарерские острова, Фиджи, Филиппины (Philippines), Финляндия (Finland), Франция (France), Французская Полинезия, Хорватия (Croatia), Центральноафриканская Республика, Чешская Республика (Czech Republic), Чили, Черногория (Montenegro), Швейцария (Switzerland), Швеция (Sweden), Шри-Ланка, Ямайка, Япония (Japan).
Иногда клиенты могут вводить название нашего интернет магазина или официальный сайт неправильно — например, западпрыбор, западпрылад, западпрібор, западприлад, західприбор, західпрібор, захидприбор, захидприлад, захидпрібор, захидпрыбор, захидпрылад. Правильно — западприбор.
Наш технический отдел осуществляет ремонт и сервисное обслуживание измерительной техники более чем 75 разных заводов производителей бывшего СССР и СНГ. Также мы осуществляем такие метрологические процедуры: калибровка, тарирование, градуирование, испытание средств измерительной техники.
Если Вы можете сделать ремонт устройства самостоятельно, то наши инженеры могут предоставить Вам полный комплект необходимой технической документации: электрическая схема, ТО, РЭ, ФО, ПС. Также мы располагаем обширной базой технических и метрологических документов: технические условия (ТУ), техническое задание (ТЗ), ГОСТ, отраслевой стандарт (ОСТ), методика поверки, методика аттестации, поверочная схема для более чем 3500 типов измерительной техники от производителя данного оборудования. Из сайта Вы можете скачать весь необходимый софт (программа, драйвер) необходимый для работы приобретенного устройства.
Также у нас есть библиотека нормативно-правовых документов, которые связаны с нашей сферой деятельности: закон, кодекс, постановление, указ, временное положение.
url-matcher — npm
Библиотека сопоставления шаблонов для URL-адресов маршрутов с типизированными параметрами.
Синтаксис пути
Путь маршрута — это строка, которая используется для сопоставления с URL-адресом (или его частью). Пути маршрутов интерпретируются буквально, за исключением следующих специальных символов:
-
:paramName
Соответствует сегменту URL и фиксирует параметр. Совпадающий сегмент зависит от правила параметра . Если правило не указано, по умолчанию используется средство сопоставления строк ( 9/?#]+ ). Совпадающая строка называется параметром . -
()
Обертывает необязательную часть URL-адреса -
*
Сопоставляет все символы (не жадные) до следующего символа в шаблоне или до конца URL-адреса, если его нет, и создает знак -
**
Соответствует всем символам (жадным) до следующего/
,?
или#
и создаетзнак
параметр
import { matchPattern } из 'url-matcher' п('/привет/:имя', '/hello') // НЕ СООТВЕТСТВУЕТ
matchPattern('/hello(/:name)', '/hello') // СОВПАДЕТ
match Pattern('/hello(/:name)', ' /hello/ryan') // СООТВЕТСТВУЕТ
matchPattern('/files/*. *', '/files/hello.jpg') // СООТВЕТСТВУЕТ
matchPattern('/files/**/*.jpg', '/files/path/to/file') // БУДЕТ СООТВЕТСТВОВАТЬ
Правила параметров
Если параметр определен в виде :parameterName
в пути, возможно, вы захотите использовать для него определенные правила синтаксического анализа. Этого можно добиться, указав правила параметров. Если, например, вы хотите сопоставлять только целые числа для определенного параметра, вы можете объявить свой маршрут следующим образом:
import { matchPattern } из 'url-matcher'
import { int } из 'url-matcher/rules'
var route = {
pattern: 'users/:userId',
rules: {
идентификатор пользователя: int()
}
}
matchPattern(route, '/100') //БУДЕТ СООТВЕТСТВОВАТЬ
matchPattern(route, '/abc') //НЕ СООТВЕТСТВУЕТ
соответствующее значение в списке paramValues
будет преобразовано в целое число.
Существующие правила
-
int({ max, min, fixedLength })
: Это правило соответствует неотрицательным целым числам и возвращает проанализированную строку в виде числа. Для дальнейшего уточнения соответствия параметров можно указать следующие аргументы:-
fixedLength
указывает точную длину аргумента -
max
указывает минимальное значение, назначаемое -
мин.
указывает максимальное значение, назначаемое
-
-
string({ maxLength, minLength, length })
: Это правило соответствует любому символу, кроме косой черты. Это правило по умолчанию, когда ничего другого не указано. вы можете использовать следующие аргументы:-
длина
указывает точную длину аргумента -
minLength
указывает минимальную длину аргумента -
maxLength
указывает максимальную длину аргумента
-
-
greedySplat()
: Это правило ведет себя точно так же, как**
. Вы можете использовать это определение вместо**
, если хотите указать другое имя параметра, отличное от используемого по умолчанию знака**
. -
splat()
Это правило ведет себя точно так же, как -
any(...values)
: Это правило соответствует, только если значение параметра указано в списке значений, переданном в качестве аргумента -
uuid()
: Это правило соответствует только значениям, которые являются допустимыми UUID
Создание пользовательского правила
Вы можете создавать собственные правила для проверки параметров. Вот пример того, как это сделать:
import { createRule } из 'url-matcher/rules'
var arrayRule = createRule({
regex: (\\[(?:\\ ж+ ,)*\\w*\\])',
convert: (v) => {
let result = []
let matcher = /(\w+)/g
let match
в то время как ((match = matcher. exec(v))) result.push(match[1])
return match
}
})
Следующее правило будет соответствовать путям, указан как список значений, разделенных запятыми, и он вернет список значений в соответствующем элементе paramValues. Вот пример использования:
import { matchPattern } из 'url-matcher'
var route = {
pattern: 'images/:tags',
rules: {
'tags': arrayRule
}
}
matchPattern(route, '/images/[top, смешно]') // БУДЕТ СООТВЕТСТВОВАТЬ
// {
// restPathname: '',
// paramNames: [ 'tags' ],
// paramValues: [ [ 'top', 'funny' ] ]
// }
createRule 90 013 — это служебный метод, который помогает определить правила. если объект, переданный в качестве параметра, не содержит ни одного из следующих свойств, будет использоваться значение по умолчанию: 9/?#]+)
(сопоставитель строк)
подтвердить
по умолчанию (() => true)
преобразовать
по умолчанию в ((val) => val)
(функция идентификации)API
matchPattern(route, pathname)
-
route
: Маршрут может быть строковым шаблоном или объектом следующих типов:-
шаблон
: строка, представляющая синтаксис пути -
правила
: Словарь правил параметров, где ключом является имя параметра, а значением является используемое правило
-
-
pathname
Строковый путь для сопоставления с маршрутом - Возвращает Если путь совпадает, возвращает объект со следующими свойствами, в противном случае undefined:
-
оставшийся путь
: оставшаяся часть пути, оставшаяся за пределами совпадения -
paramNames
: Список имен параметров в порядке появления -
paramValues
: Список значений параметров в порядке появления
-
getRoute(route)
- Возвращает объект со следующими свойствами:
-
токены
: список токенов, на которые разбит шаблон маршрута -
regexpSource
: регулярное выражение, используемое для сопоставления путей -
params
: список объектов параметров, содержащийparamName
иparamRule
в порядке появления. -
paramNames
: список имен параметров в порядке появления
-
formatPattern(route, params)
-
params
словарьparamName: paramValue
- Возвращает версию заданного шаблона с интерполированными параметрами. Выдает, если есть динамический сегмент паттерна, для которого нет параметра
getParams(route, pathname)
- Возвращает словарь
paramName: paramValue
, если путь соответствует маршруту, иначе null
Сопоставители запросов (Caddyfile) — Caddy Documentation
Сопоставители запросов могут использоваться для фильтрации (или классификации) запросов по различным критериям.
- Синтаксис
- Примеры
- Сопоставители подстановочных знаков
- Сопоставители пути
- Именованные сопоставители
- Стандартные сопоставители
- выражение
- файл
- заголовок
- header_regexp
- хост
- метод
- вместо
- путь
- path_regexp
- протокол
- запрос
- удаленный_ip
- вар
- vars_regexp
Синтаксис
В Caddyfile токен сопоставления сразу после директивы может ограничить область действия этой директивы. Токен сопоставления может быть одной из следующих форм:
-
*
для соответствия всем запросам (шаблон; по умолчанию). -
/path
начинается с косой черты, чтобы соответствовать пути запроса. -
@name
чтобы указать именованный сопоставитель .
Жетоны Matcher обычно необязательны. Если токен сопоставителя опущен, он аналогичен сопоставителю с подстановочными знаками ( *
).
Примеры
Эта директива применяется ко всем HTTP-запросам:
реверс_прокси локальный: 9000
А это то же самое (*
здесь лишнее):
обратный_прокси * локальный: 9000
Но эта директива применяется только к запросам, путь которых начинается с /api/
:
reverse_proxy /api/* локальный хост: 9000
Чтобы сопоставить что-либо, кроме пути, определите именованный сопоставитель и обратитесь к нему, используя @name
:
@postfoo { метод POST путь /foo/* } reverse_proxy @postfoo локальный хост: 9000
Сопоставители подстановочных знаков
Подстановочный (или универсальный) сопоставитель *
соответствует всем запросам и требуется только в том случае, если требуется токен сопоставителя. Например, если первый аргумент, который вы хотите передать директиве, также является путем, он будет выглядеть точно так же, как средство сопоставления путей! Таким образом, вы можете использовать сопоставитель подстановочных знаков для устранения неоднозначности, например:
корень * /home/www/mysite
В противном случае этот сопоставитель используется нечасто. Обычно мы рекомендуем опускать его, если синтаксис не требует этого.
Сопоставители пути
Сопоставление по пути URI является наиболее распространенным способом сопоставления запросов, поэтому сопоставитель может быть встроен, например:
переадресация /old.html /new.html
Токены сопоставления путей должны начинаться с косой черты /
.
Сопоставление пути по умолчанию является точным совпадением, а не совпадением префикса. Вы должны добавить *
для быстрого совпадения префикса. Обратите внимание, что /foo*
будет соответствовать /foo
и /foo/
, а также /foobar
; вместо этого вам может понадобиться /foo/*
.
Именованные сопоставления
Все сопоставители, не являющиеся сопоставителями путей или подстановочных знаков, должны быть названы сопоставителями. Это сопоставитель, который определен вне какой-либо конкретной директивы и может использоваться повторно.
Определение сопоставления с уникальным именем дает вам больше гибкости, позволяя объединять любые доступные сопоставления в набор:
@имя { ... }
или, если в наборе только один матчер, можно поставить его на одну строку:
@имя ...
Затем вы можете использовать сопоставитель следующим образом: @name
Например:
@вебсокеты { Заголовок Подключение *Обновление* заголовок Обновление веб-сокета } reverse_proxy @websockets локальный хост: 6001
Это проксирует только те запросы, у которых есть поле заголовка «Соединение», содержащее слово «Обновление», и другое поле с именем «Обновление» со значением «websocket».
Если набор сопоставителей состоит только из одного сопоставителя, также работает однострочный синтаксис:
метод @post POST reverse_proxy @post localhost:6001
В качестве особого случая, сопоставитель выражения
может использоваться без указания его имени, если за именем сопоставителя следует один аргумент в кавычках (само выражение CEL):
@notFound `{err. status_code} == 404`
Как и директивы, определения именованных сопоставлений должны находиться внутри блоков сайта, которые их используют.
Определение именованного сопоставителя составляет набор сопоставителей . Сопоставители в наборе объединяются по И; то есть все должно совпадать. Например, если у вас есть оба заголовок
и путь
совпадают в наборе, оба должны совпадать.
Несколько сопоставителей одного типа могут быть объединены (например, несколько сопоставителей путей
в одном наборе) с использованием булевой алгебры (И/ИЛИ), как описано в соответствующих разделах ниже.
Стандартные сопоставители
Полную документацию по сопоставителю можно найти в документации каждого соответствующего модуля сопоставителя.
Запросы могут быть сопоставлены следующими способами:
выражение
выражение <цел...>
Любым выражением CEL (Common Expression Language), которое возвращает true
или false
.
Заполнители Caddy (или сокращения Caddyfile) могут использоваться в этих выражениях CEL, поскольку они предварительно обрабатываются и преобразуются в обычные вызовы функций CEL перед интерпретацией средой CEL.
Начиная с версии 2.5.2, большинство других сопоставителей запросов также можно использовать в выражениях как функции, что обеспечивает большую гибкость для логической логики, чем внешние выражения. См. документацию для каждого сопоставителя для поддерживаемого синтаксиса в выражениях CEL.
Для удобства имя сопоставителя может быть опущено при определении именованного сопоставителя, состоящего исключительно из CEL-выражения. Это читается довольно красиво:
@mutable `{метод}.startsWith("P")`
В этом случае предполагается наличие CEL-сопоставителя.
Примеры:
Соответствие запросам, методы которых начинаются с P
, например. PUT
или POST
:
выражение {метод}. startsWith("P")
Запросы соответствия, где обработчик возвратил код ошибки 9/(\ш*)’)
файл
файл { корень <путь> try_files <файлы...> try_policy first_exist|наименьший_размер|наибольший_размер|самый_последний_модифицированный split_path <разделители...> } файл <файлы...> выражение `файл({ 'корень': '<путь>', 'try_files': ['<файлы...>'], 'try_policy': 'first_exist|наименьший_размер|наибольший_размер|самый_последний_модифицированный', 'split_path': ['<разделители...>'] })` файл выражения('<файлы...>')
По файлам.
root
определяет каталог, в котором нужно искать файлы. По умолчанию используется текущий рабочий каталог или переменнаяroot
({http.vars.root}
), если она установлена (можно установить с помощью директивыroot
).try_files
проверяет файлы в своем списке, которые соответствуют try_policy.Для сопоставления каталогов добавьте косую черту
/
в конце пути. Все пути к файлам указаны относительно корня сайта, а шаблоны глобусов будут расширены.Если
try_policy
равноfirst_exist
(по умолчанию), то последним элементом в списке может быть число с префиксом=
(например,=404
), что в качестве запасного варианта выдаст ошибку с этим код; ошибка может быть обнаружена и обработана с помощьюhandle_errors
.try_policy
указывает, как выбрать файл. По умолчаниюfirst_exist
.first_exist
проверяет наличие файла. Выбирается первый существующий файл.наименьший_размер
выбирает файл с наименьшим размером.самый большой_размер
выбирает файл с наибольшим размером.most_recent_modified
выбирает файл, который был изменен последним.
split_path
приведет к разделению пути по первому разделителю в списке, который находится в каждом пути к файлу, который нужно попробовать. Для каждого значения разделения левая сторона разделения, включая сам разделитель, будет пробным путем к файлу. Например,/remote.php/dav/
с использованием разделителя.php
попробует файл/remote.php
. Каждый разделитель должен появиться в конце компонента пути URI, чтобы его можно было использовать в качестве разделительного разделителя. Это нишевая настройка, которая в основном используется при обслуживании PHP-сайтов.
Поскольку try_files
с политикой first_exist
настолько распространены, для этого существует однострочный ярлык:
файл <файлы...>
Пустой файл
сопоставитель (тот, у которого нет файлов, перечисленных после него) увидит, существует ли запрошенный файл — дословно из URI относительно корня сайта. Фактически это то же самое, что и file {path}
.
Поскольку перезапись, основанная на существовании файла на диске, очень распространена, существует также директива try_files
, которая является ярлыком для сопоставления файла
и обработчика перезаписи
.
После сопоставления будут доступны четыре новых заполнителя:
-
{file_match.relative}
Путь к файлу относительно корня. Это часто бывает полезно при переписывании запросов. -
{file_match.absolute}
Абсолютный путь к соответствующему файлу, включая корень. -
{file_match.type}
Тип файла,файл
иликаталог
. -
{file_match.remainder}
Часть, оставшаяся после разделения пути к файлу (если настроеноsplit_path
)
Примеры:
Соответствие запросам, где путь является существующим файлом:
файл
Сопоставление запросов, в которых путь, за которым следует .html
, является существующим файлом, или, если нет, где путь является существующим файлом:
файл { try_files {путь}.html {путь} }
То же, что и выше, за исключением использования однострочного ярлыка и возврата к выдаче ошибки 404, если файл не найден:
файл {путь}. html {путь} = 404
заголовок <поле> [<значение>] заголовок выражения ({'<поле>': '<значение>'})
По полям заголовка запроса.
-
<поле>
— это имя поля заголовка HTTP для проверки.- Если префикс
!
, поле не должно существовать для соответствия (опустить значение arg).
- Если префикс
-
<значение>
— это значение, которое должно совпадать с полем.- Если используется префикс
*
, выполняется быстрое сопоставление суффикса. - Если с суффиксом
*
выполняется быстрое сопоставление префикса. - Если он заключен в
*
, выполняется быстрое сопоставление подстроки. - В противном случае это быстрое точное совпадение.
- Если используется префикс
Различные поля заголовков в одном наборе объединяются по И. Несколько значений в поле объединяются по ИЛИ.
Обратите внимание, что поля заголовков могут повторяться и иметь разные значения. Бэкэнд-приложения ДОЛЖНЫ учитывать, что значения полей заголовка являются массивами, а не единичными значениями, и Caddy не интерпретирует смысл в таких затруднениях.
Пример:
Запросы на сопоставление с заголовком Connection
, содержащим Upgrade
:
*Обновление*
Запросы на сопоставление с заголовком Foo
, содержащим bar
OR baz
:
@foo { заголовок Foo бар заголовок Foo baz }
Запросы на совпадение, которые вообще не имеют поля заголовка Foo
:
заголовок @not_foo !Foo
header_regexp [<имя>] <поле> <регулярное выражение> выражение header_regexp('<имя>', '<поле>', '') выражение header_regexp('<поле>', ' ')
Аналогично заголовку
, но поддерживает регулярные выражения. Доступ к группам захвата можно получить с помощью заполнителя, например {re. name.capture_group}
, где имя
— это имя регулярного выражения (необязательно, но рекомендуется), а группа захвата
— это либо имя, либо номер группы захвата в выражение. Группа захвата 0
— это полное соответствие регулярному выражению, 1
— первая группа захвата, 2
— вторая группа захвата и так далее.
Используемый язык регулярных выражений — RE2, включенный в Go. См. справочник по синтаксису RE2 и обзор синтаксиса регулярных выражений Go.
Для каждого поля заголовка поддерживается только одно регулярное выражение. Несколько разных полей будут объединены по И.
Пример:
Запросы соответствия, в которых заголовок Cookie содержит login_
, за которым следует шестнадцатеричная строка, с группой захвата, к которой можно получить доступ с помощью {re.login.1}
.
header_regexp логин Cookie login_([a-f0-9]+)
хост
хост <хост. ..> выражение host('')
Соответствует запросу по полю заголовка Host
запроса. Это не принято использовать в Caddyfile, так как большинство блоков сайтов уже указывают хосты в адресе сайта. Этот сопоставитель в основном используется в блоках сайта, которые не определяют конкретные имена хостов (например, субдомены с подстановочными знаками), но где требуется логика, специфичная для имени хоста.
Несколько сопоставителей host
будут объединены по ИЛИ.
Пример:
хост sub.example.com
метод
метод <глаголы...> метод выражения('<глаголы...>')
По методу (глаголу) HTTP-запроса. Глаголы должны быть в верхнем регистре, например POST
. Может соответствовать одному или нескольким методам.
Несколько совпадений метода
будут объединены по ИЛИ.
Примеры:
Запросы соответствия с методом GET
:
метод ПОЛУЧИТЬ
Запросы соответствия с ПОСТАВИТЬ
или УДАЛИТЬ
методы:
метод PUT DELETE
не
не <любой другой сопоставитель>
или, чтобы отменить несколько совпадений, которые объединяются по И, откройте блок:
не { <любые другие сопоставители. ..> }
Результаты вложенных сопоставителей будут инвертированы.
Примеры:
Соответствовать запросам с путями, которые НЕ начинаются с /css/
ИЛИ /js/
.
не путь /css/* /js/*
Запросы соответствия НИ ОДНОМУ:
- и префикс пути
/api/
, NOR - метод запроса
POST
т.е. не должно быть ни одного из этих совпадений:
не путь /api/* не метод POST
Запросы соответствия БЕЗ ОБОИХ:
- префикс пути
/api/
И - метод запроса
POST
т. е. не должно быть ни одного, ни одного из этих совпадений:
не { путь /апи/* метод POST }
путь
путь <пути...> путь выражения('<пути...>')
По пути запроса (компонент пути URI запроса). Совпадения путей являются точными, но нечувствительны к регистру. Можно использовать подстановочные знаки *
:
- Только в конце, для совпадения префикса (
/prefix/*
) - Только в начале, для совпадения суффикса (
*. suffix
) - Только с обеих сторон, для совпадения подстроки (
*/contains/*
) - Только посередине, для шарового совпадения (
/accounts/*/info
)
Косые черты имеют значение. Например, /foo*
будет соответствовать /foo
, /foobar
, /foo/
и /foo/bar
, но /foo/*
будет не 9 0439 соответствует /foo
или /foobar
.
Пути запросов очищаются для разрешения точек обхода каталога перед сопоставлением. Кроме того, несколько косых черт объединяются, если шаблон соответствия не содержит несколько косых черт. Другими словами, /foo
будет соответствовать /foo
и //foo
, но //foo
будет соответствовать только //foo
.
Поскольку существует несколько экранированных форм любого заданного URI, путь запроса нормализован (URL-декодированный, без экранирования), за исключением тех escape-последовательностей в позициях, где escape-последовательности также присутствуют в шаблоне соответствия. Например, /foo/bar
соответствует как /foo/bar
, так и /foo%2Fbar
, но /foo%2Fbar
будет соответствовать только /foo%2Fbar
, потому что escape-последовательность явно задана в конфигурации.
Специальный escape-символ %*
также можно использовать вместо *
, чтобы оставить соответствующий диапазон скрытым. Например, /bands/*/*
не будет соответствовать /bands/AC%2FDC/T.N.T
, потому что путь будет сравниваться в нормализованном пространстве, где он выглядит как /bands/AC/DC/T.N.T
, что не соответствует не соответствовать рисунку; однако /bands/%*/*
будет соответствовать /bands/AC%2FDC/T.N.T
, поскольку диапазон, представленный %*
, будет сравниваться без декодирования управляющих последовательностей.
Несколько путей будут объединены по ИЛИ.
path_regexp
path_regexp [<имя>]выражение path_regexp('<имя>', ' ') выражение path_regexp(' ')
Как путь
, но поддерживает регулярные выражения. Запишите шаблон в декодированной/неэкранированной форме пути URI.
Используемый язык регулярных выражений — RE2, включенный в Go. См. справочник по синтаксису RE2 и обзор синтаксиса регулярных выражений Go.
Доступ к группам захвата можно получить с помощью заполнителя, например {re.name.capture_group}
, где имя
— это имя регулярного выражения (необязательно, но рекомендуется), а группа захвата
— это либо имя, либо номер группы захвата в выражение. Группа захвата 0
— полное соответствие регулярному выражению, 1
— первая группа захвата, 2
— вторая группа захвата и так далее.
Для каждого именованного сопоставителя может быть только один шаблон path_regexp
.
Пример:
Соответствие запросам, в которых путь заканчивается 6-символьной шестнадцатеричной строкой, за которой следует .css
или .js
в качестве расширения файла, с группами захвата, к которым можно получить доступ с помощью {re. static.1}
и {re. static.2}
для каждой части, заключенной в ( )
, соответственно:
path_regexp статическое \.([a-f0-9]{6})\.(css|js)$
протокол
протокол http|https|grpc|http/<версия>[+] протокол выражений('http|https|grpc')
По протоколу запроса. Можно использовать широкое имя протокола, например http
, https
или grpc
; или конкретные или минимальные версии HTTP, такие как http/1.1
или http/2+
.
Может быть только один сопоставитель протокола
на именованный сопоставитель.
запрос
запрос= ... запрос выражения ({' ': ' '}) выражение запроса({' ': [' ']})
По параметрам строки запроса. Должна быть последовательность из пар ключ=значение
. Ключи сопоставляются точно (с учетом регистра), но также поддерживают *
для соответствия любому значению. Значения могут использовать заполнители.
Может быть несколько сопоставителей запросов
для каждого именованного сопоставителя, и пары с одинаковыми ключами будут объединены вместе.
Недопустимые строки запроса (неверный синтаксис, неэкранированные точки с запятой и т. д.) не будут проанализированы и, следовательно, не будут соответствовать.
ПРИМЕЧАНИЕ. Параметры строки запроса представляют собой массивы, а не единичные значения. Это связано с тем, что повторяющиеся ключи допустимы в строках запроса, и каждый из них может иметь другое значение. Этот сопоставитель будет соответствовать ключу, если любое из его настроенных значений назначено в строке запроса. Серверные приложения, использующие строки запроса, ДОЛЖНЫ учитывать, что значения строки запроса являются массивами и могут иметь несколько значений.
Пример:
Сопоставление запросов с параметром запроса sort со значением asc
:
запрос sort=asc
удаленный_ip
remote_ip [переадресовано] <диапазоны. ..> выражение remote_ip('<диапазоны...>') выражение remote_ip('forwarded', '<диапазоны...>')
По удаленному (клиентскому) IP-адресу. Принимает точные IP-адреса или диапазоны CIDR. Если первый аргумент forwarded
, то первый IP-адрес в X-Forwarded-For 9Заголовок запроса 0013, если он присутствует, будет предпочтительнее в качестве эталонного IP-адреса, а не IP-адреса непосредственного партнера, который используется по умолчанию. Поддерживаются зоны IPv6.
В качестве ярлыка private_ranges
можно использовать для сопоставления всех частных диапазонов IPv4 и IPv6. Это то же самое, что указать все эти диапазоны: 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 127.0.0.1/8 fd00::/8 ::1
Может быть несколько сопоставителей remote_ip
для одного именованного сопоставителя, и их диапазоны будут объединены и объединены по ИЛИ.
Пример:
Сопоставление запросов с частных IPv4-адресов:
удаленный_ip 192. 168.0.0/16 172.16.0.0/12 10.0.0.0/8 127.0.0.1/8
Этот сопоставитель обычно работает в паре с сопоставителем , а не
, чтобы инвертировать совпадение. Например, чтобы прервать все соединения с общедоступных адресов IPv4 и IPv6 (что является инверсией всех частных диапазонов):
@denied not remote_ip private_ranges прервать @отказано
переменная
vars <переменная> <значения...>
По значению переменной в контексте запроса или значению заполнителя. Можно указать несколько значений для соответствия любому из этих возможных значений (по ИЛИ).
Аргумент <переменная> может быть либо именем переменной, либо заполнителем в фигурных скобках { }
. (Заполнители не расширяются в первом параметре.)
Этот сопоставитель наиболее полезен в сочетании с директивой map
, которая устанавливает выходные данные, или с плагинами, которые устанавливают некоторую информацию в контексте запроса.
Пример:
Соответствие выходным данным директивы map с именем magic_number
для значений 3
или 5
:
варс {magic_number} 3 5
vars_regexp
vars_regexp [<имя>] <переменная>
Аналогично vars
, но поддерживает регулярные выражения. Доступ к группам захвата можно получить с помощью заполнителя, такого как {re.name.capture_group}
, где name
— это имя регулярного выражения (необязательно, но рекомендуется) и группа захвата
— это либо имя, либо номер группы захвата в выражении. Группа захвата 0
— это полное соответствие регулярному выражению, 1
— первая группа захвата, 2
— вторая группа захвата и так далее.
Используемый язык регулярных выражений — RE2, включенный в Go. См. справочник по синтаксису RE2 и обзор синтаксиса регулярных выражений Go.