WAF и сеть
Web — дополнительные возможности
Заголовок раздела «Web — дополнительные возможности»Эта страница описывает расширенные возможности, которые обычно подключают после того, как базовый virtual-host уже работает.
Настройка HTTP клиента (upstream object)
Заголовок раздела «Настройка HTTP клиента (upstream object)»var backend1_upstream: [ url: "https://backend1.example.com" web_client_config: [ http_version: "http1" request_headers: [ Host: "backend1.example.com" ] tls_backend: "grasshopper" pool_max_idle_per_host: 100 pool_idle_timeout: 15.0 connect_timeout: 5.0 timeout: 10.0 read_timeout: 0.1 ]]
[ general: [ address: "127.0.0.1" mode: "https" port: 8443 ]
localhost: [ /: [ reverse_proxy: backend1_upstream ] ]]Сжатие (compression)
Заголовок раздела «Сжатие (compression)»Не рекомендуется сжимать уже сжатые форматы (например, png, jpg, webp, mp4) — это почти не даёт выигрыша и увеличивает CPU. zstd обычно даёт хороший компромисс скорость/сжатие, но проверь поддержку на клиентах и в твоей инфраструктуре.
compression: [ compression_type: "zstd" compression_level: 15]compression_type:gzip,brotli,deflate,zstdcompression_level: 1–15
WebP-конвертация
Заголовок раздела «WebP-конвертация»webp_convert: [ quality: 7.0 min_size_to_convert: "1KB"]Когда включать WebP-конвертацию
Заголовок раздела «Когда включать WebP-конвертацию»WebP полезен для сайтов с большим количеством изображений и повторяющимся трафиком.
Для динамического контента или если CPU ограничен — включай осторожно и начинай с умеренного качества.
Кэширование
Заголовок раздела «Кэширование»cache: [ provider: "inmemory" fallback: "redis" redis_urls: [ "redis://127.0.0.1:6379" ] content_types: [ "text/html" "text/css" "text/javascript" "application/javascript" "application/json" "image/png" "image/jpeg" "image/gif" "image/webp" "image/svg+xml" "font/ttf" "font/otf" "font/woff" "font/woff2" "audio/mpeg" "audio/ogg" "video/mp4" "video/webm" ] headers: [ "ETag" "Accept" "Range" ] max_body_size: "10GB" capacity: "1GB" cache_ttl: 86400]provider:inmemory|filesystem|rediscache_dir: путь дляfilesystemcache_ttl: время жизни в секундах
Кэширование потокового видео
Заголовок раздела «Кэширование потокового видео»Доступно, начиная с тарифа STANDART.
video_cache: [ provider: "filesystem" fallback: "inmemory" cache_dir: "meshgate_cache/video_cache" headers: [ "ETag" "Accept" "Range" ] max_body_size: "10GB" capacity: "1GB" cache_ttl: 86400]Rewrite rules
Заголовок раздела «Rewrite rules»Формат: селектор:атрибут:префикс, несколько правил через запятую.
rewrite_rules: "[href]:href:/cdn, [src]:src:/img"Response headers
Заголовок раздела «Response headers»response_headers: [alt-svc: "h3=:443; ma=86400"]WAF Layer7
Заголовок раздела «WAF Layer7»Действия (action)
Заголовок раздела «Действия (action)»allow,block,dropchallenge,captcharedirect(url),render(path),proxy(url)template(path),inject(path)obfuscate,sqlcheckratelimit(с параметрами)
Поля выражений (часто используемые)
Заголовок раздела «Поля выражений (часто используемые)»| Ключ | Wireshark / поле | Описание |
|---|---|---|
| Method | http.request.method | метод HTTP |
| UriPath | http.request.uri.path | путь URI |
| UriQuery | http.request.uri.query | query |
| HttpVersion | http.request.version | версия HTTP |
| Ja3 | http.request.ja3 | JA3 отпечаток |
| Ja3Sort | http.request.ja3_sort | отсортированный JA3 |
| SrcIp | ip.src | IP клиента |
| SrcPort | ip.src.port | порт клиента |
| SrcCountry | ip.src.geo | страна |
| SrcAsn | ip.src.asn | ASN |
| Headers | http.request.headers | заголовки |
Операторы
Заголовок раздела «Операторы»Приоритет: not/! → and/&& → xor → or/||.
Используй скобки при комбинации операторов.
Примеры выражений
Заголовок раздела «Примеры выражений»http.request.method eq 'POST' and http.request.uri.path contains '/admin' and (ip.src.country eq 'RU' or ip.src.country eq 'UA')Пример WAF конфигурации
Заголовок раздела «Пример WAF конфигурации»waf_rules: [ allow_from_local_addr: [ priority: 0 expr: "ip.src eq 10.0.0.1" action: "allow" ]
block_post_requests: [ priority: 1 expr: "http.request.method eq 'POST'" action: "block" ]
rate_limit_no_cache_requests: [ priority: 3 expr: "http.request.headers['pragma'] eq 'no-cache'" action: ratelimit : [ requests: 60 burst: 5 seconds: 1 action: block: 3600 by_ip: true by_fingerprint: false ] ]
redirect_to_google: [ priority: 4 expr: "http.request.uri.path eq '/google'" action: redirect: "https://google.com" ]]net (TCP/UDP)
Заголовок раздела «net (TCP/UDP)»hosts— список upstream’ов TCP/UDPalgorithm—RR|WRR|Hash
TCP Round Robin
Заголовок раздела «TCP Round Robin»[ general: [ address: "127.0.0.1" mode: "tcp" port: 8443 ] algorithm: "RR" hosts: [ "1.1.1.1:80" "1.0.1.0:80" ]]UDP Weighted Round Robin
Заголовок раздела «UDP Weighted Round Robin»[ general: [ address: "127.0.0.1" mode: "udp" port: 5353 ] algorithm: "RR" hosts: [ ["1.1.1.1:53" 1] ["1.0.1.0:53" 2] ]]TCP без балансировки
Заголовок раздела «TCP без балансировки»[ general: [ address: "127.0.0.1" mode: "tcp" port: 8443 ] hosts: [ "1.1.1.1:80" ]]UDP без балансировки
Заголовок раздела «UDP без балансировки»[ general: [ address: "127.0.0.1" mode: "udp" port: 5353 ] hosts: [ "1.1.1.1:53" ]]