Это кажется очень простым вопросом, но мне трудно найти простое решение, поэтому благодарю за любую помощь и терпение в этом вопросе:
Я хочу настроить свой прокси-сервер Apache для перенаправления определенных URL-адресов, чтобы, например, HTTP-запрос веб-браузера для www.olddomain.com передавался на прокси-сервер, который затем направляет запрос на www.newdomain.com, который отправляет ответ на прокси-сервер, который затем передает его обратно в веб-браузер.
Кажется настолько простым, но я не вижу, как этого добиться на Apache. Я знаю, что Squid / Squirm предлагает эту функциональность, поэтому предполагаю, что мне не хватает чего-то действительно простого. Я знаю, что могу использовать RewriteRule для динамического изменения URL-адреса и передачи его на прокси-сервер, но я действительно хочу сделать обратное, когда прокси-сервер получает исходный URL-адрес, применяет RewriteRule, а затем перенаправляет HTTP-запрос на новый URL.
Надеюсь, это имеет смысл. Заранее благодарю за любую помощь.
Из вашего комментария к моему предыдущему ответу я понимаю, что вы используете Apache в качестве прокси-сервера пересылки (ProxyRequests On
). Ты можешь использовать mod_rewrite
чтобы прокси проходил через определенные URL.
Вероятно, у вас в конфигурации Apache есть что-то вроде этого:
ProxyRequests On
ProxyVia On
<Proxy *>
Order deny,allow
Allow from xx.xx.xx.xx
</Proxy>
Затем вам нужно добавить следующее, чтобы передавать все запросы от www.olddomain.com/foo
к www.newdomain.com/bar
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$
RewriteRule /foo(.*)$ http://www.newdomain.com/bar/$1 [P,L]
Что это значит:
www.olddomain.com
, то RewriteRule
будет стрелять./foo
к http://www.newdomain.com/bar/
.mod_proxy
(P
).L
).Пример результата:
www.olddomain.com/foo/test.html
.www.newdomain.com/bar/test.html
.www.olddomain.com/foo/test.html
.Если я правильно вас понял, вы, вероятно, захотите посмотреть: mod_proxy в сочетании с виртуальными хостами на основе имен
Вот небольшой пример того, как это может выглядеть. Все запросы с виртуального хоста www.olddomain.com будут запрашиваться с www.newdomain.com и перезаписываться apache:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.olddomain.com
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://www.newdomain.com/
ProxyPassReverse / http://www.newdomain.com/
ProxyPassReverseCookieDomain www.newdomain.com www.olddomain.com
</VirtualHost>