Я пытаюсь переписать URI, а также заголовок хоста на основе некоторых условий. Вот пример того, чего я пытаюсь достичь:
Я прошу http://sub1.example.com/test/files/other
if hdr_beg(Host) sub1.example.com and path_beg /test
rewrite host header to sub2.example.com
rewrite URI to /files/other (in other words, remove test from the URI)
Конечный результат должен указывать на sub2.example.com/files/other без ведома пользователя.
Я пробовал следующую конфигурацию:
acl host_beg_sub1 hdr_beg(Host) sub1.example.com
acl path_beg_test path_beg /test
rewrite host header if host_beg_sub1 path_beg_test
rewrite URI if host_beg_sub1 path_beg_test
Очевидно, это не работает должным образом, поскольку вторая перезапись не сработает после изменения заголовка хоста.
Я не могу переписать без условия, так как есть другой трафик, URI которого может начинаться с test.
Заранее спасибо!
Если вы хотите сделать несколько замен, вы можете подумать о том, чтобы поместить их в бэкэнд.
frontend
acl host_beg_sub1 hdr_beg(Host) sub1.example.com
acl path_beg_test path_beg /test
use_backend sub2redirect if host_beg_sub1 path_beg_test
backend
reqirep ^Host:\ sub1.example.com Host:\ sub2.example.com
reqirep ...url rewriting
server ...