Поддержка переписывания (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
/abc
coffee-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