Поддержка переписывания (rewrites)#
ANIC позволяет преобразовывать (переписывать) URI запроса перед отправкой в приложение.
Например, путь запроса В следующем примере нагрузка между двумя приложениями, требующими изменения URI,
балансируется с помощью префиксного сопоставления: Изменения URI для Исходный URI Переписанный URI Изменения URI для Исходный URI Переписанный URI Если путь представляет собой регулярное выражение, а не префикс или точное соответствие,
Пример: В этом примере группа захвата Примеры изменения URI для Исходный URI Переписанный URI/tea/green может быть перезаписан как /green.
Для настройки изменения URI необходимо использовать ActionProxy
в VirtualServer или VirtualServerRoute.Пример с префиксом в пути#
apiVersion: k8s.angie.software/v1
kind: VirtualServer
metadata:
name: cafe
spec:
host: cafe.example.com
upstreams:
- name: tea
service: tea-svc
port: 80
- name: coffee
service: coffee-svc
port: 80
routes:
- path: /tea/
action:
proxy:
upstream: tea
rewritePath: /
- path: /coffee
action:
proxy:
upstream: coffee
rewritePath: /beans
tea-svc (обратите внимание,
что запросы к /tea перенаправляются на /tea/ с добавлением косой черты в конце):/tea///tea/abc/abccoffee-svc:/coffee/beans/coffee//beans//coffee/abc/beans/abcПример с регулярными выражениями#
rewritePath может содержать группы захвата $1-9.apiVersion: k8s.angie.software/v1
kind: VirtualServer
metadata:
name: cafe
spec:
host: cafe.example.com
upstreams:
- name: tea
service: tea-svc
port: 80
routes:
- path: ~ /tea/?(.*)
action:
proxy:
upstream: tea
rewritePath: /$1
(.*) используется в rewritePath как /$1.
Это необходимо для передачи оставшейся части URI запроса (после /tea).tea-svc:/tea//tea///tea/abc/abc