Поддержка переписывания (rewrites)#
ANIC позволяет преобразовывать (переписывать) URI запроса перед отправкой в приложение.
Например, путь запроса /tea/green может быть перезаписан как /green.
Для настройки изменения URI необходимо использовать ActionProxy
в VirtualServer или VirtualServerRoute.
Пример с префиксом в пути#
В следующем примере нагрузка между двумя приложениями, требующими изменения URI, балансируется с помощью префиксного сопоставления:
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
Изменения URI для tea-svc (обратите внимание,
что запросы к /tea перенаправляются на /tea/ с добавлением косой черты в конце):
Исходный URI | Переписанный URI |
|---|---|
|
|
|
|
Изменения URI для coffee-svc:
Исходный URI | Переписанный URI |
|---|---|
|
|
|
|
|
|
Пример с регулярными выражениями#
Если путь представляет собой регулярное выражение, а не префикс или точное соответствие,
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).
Примеры изменения URI для tea-svc:
Исходный URI | Переписанный URI |
|---|---|
|
|
|
|
|
|