Вот установка. У нас есть аппаратный балансировщик нагрузки с виртуальным кластером http. Назовем этот виртуальный кластер example1.com. Этот виртуальный кластер распределяет нагрузку между двумя обратными прокси-серверами squid, которые также находятся на тех же физических серверах, что и веб-серверы. Squid слушает 80 и указывает на себя как на веб-сервер cache_peer, который слушает на 81. У нас также есть автономный веб-сервер, который мы назовем example2.com.
Мы пытаемся создать подкаталог на example1.com с именем example1.com/example2. Это будет указывать на example2.com, но мы хотим, чтобы наши пользователи оставались на example1.com/example2 в своем браузере. Итак, это похоже на перенаправление, но не на самом деле. Как, черт возьми, мне это делать? Это вообще возможно? А пока я смотрю документацию по Squid.
У меня все заработало. Я перенастроил squid на использование acl urlpath_regex и установил example2.com в качестве вторичного однорангового узла кеша. Затем я установил example2.com, чтобы разрешить / example2, но запретить все остальные. Затем для example1.com я установил deny / example2. Он работает как задумано. Вот как выглядит конфигурационный файл.
acl перенаправить urlpath_regex ^ / example2 *
cache_peer example1.com родительский 81 0 без запроса originserver name = server1
cache_peer example2.com parent 80 0 без запроса originserver name = server2
cache_peer_access server1 запретить перенаправление
cache_peer_access server2 разрешить перенаправление
cache_peer_access server2 запретить все
Если я перейду на example1.com/example2, он получит контент с example2.com, но URL-адрес example1.com останется в браузере.
Возможно, мне здесь что-то не хватает, но на самом деле это звучит довольно просто. Балансировка нагрузки для всех запросов, для которых соответствует URL-путь ^/example2/
к example2.com
веб сервер.
Переместите все содержимое веб-сайта из корня каталога в подкаталог с именем /example2/
на example2.com
веб сервер.