Назад | Перейти на главную страницу

Обратный прокси-сервер Apache, перенаправляющий разные диапазоны исходных IP-адресов на разные целевые URL-адреса

Вероятно, существует уже существующий вопрос (или руководство где-то в Интернете) по этому поводу, но я не смог его найти.

Мы хотим постепенно перенести нашу пользовательскую базу с одной реализации внутреннего сервера на новую реализацию на других серверах.

Перед внутренним сервером уже есть обратный прокси Apache2.

Поэтому мы хотели бы проксировать некоторые диапазоны / подсети исходных IP-адресов на новый сервер, оставив все остальные перенаправления на исходный сервер. Затем добавьте к диапазонам IP-адресов этот прокси-сервер для нового сервера, пока все они не будут работать. Затем удалите старый сервер.

Может кто-нибудь подскажет, как это делается в Apache?

Для меня подход был бы примерно таким:

# /etc/httpd/conf/httpd.conf
<snip>
<If "-R '10.1.0.0/16'">
  ProxyPassReverse /app /http://new-app/app
</If>
<ElseIf "-R '192.168.1.0/24'">
  ProxyPassReverse /app /http://new-app/app
</ElseIf>
<Else>
  ProxyPassReverse /app /http://old-app/app
</Else>

Из руководство по apache

Вы можете сделать это с помощью mod_rewrite для проксирования. Вам нужно будет установить условие перезаписи на основе исходного IP-адреса и правила перезаписи с флагом [P]. Примерно так должно работать:

RewriteCond %{REMOTE_ADDR} ^10\.2\.
RewriteRule ^/(.*) http://old-app/$1 [P]
ProxyPassReverse / http://old-app/ 

RewriteCond %{REMOTE_ADDR} ^10\.3\.
RewriteRule ^/(.*) http://new-app/$1 [P]
ProxyPassReverse / http://new-app/ 

Проверьте http://httpd.apache.org/docs/2.2/rewrite/proxy.html Чтобы получить больше информации.