Spec-Zone.ru › Apache HTTP Server

Использование mod_rewrite для проксирования

Этот документ дополняет mod_rewrite документацию по справке. Он описывает, как использовать флаг RewriteRule [P] для проксирования содержимого на другой сервер. Приведены несколько рецептов, описывающих распространенные сценарии.

Проксирование содержимого с помощью mod_rewrite

Описание:

mod_rewrite предоставляет флаг [P], который позволяет передавать URL-адреса через mod_proxy на другой сервер. Здесь приведены два примера. В одном примере URL-адрес передается напрямую на другой сервер и обрабатывается так, как будто это локальный URL-адрес. В другом примере мы проксируем отсутствующее содержимое на сервере бэкенда.

Решение:

Чтобы просто сопоставить URL-адрес с другим сервером, мы используем флаг [P] следующим образом:

RewriteEngine  on
RewriteBase    "/products/"
RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"

Во втором примере мы проксируем запрос только в том случае, если мы не можем найти ресурс локально. Это может быть очень полезно при миграции с одного сервера на другой, когда вы не уверены, что все содержимое уже перенесено.

RewriteCond "%{REQUEST_FILENAME}"       !-f
RewriteCond "%{REQUEST_FILENAME}"       !-d
RewriteRule "^/(.*)" "http://old.example.com/$1" [P]
ProxyPassReverse "/" "http://old.example.com/"
Обсуждение:

В каждом случае мы добавляем директиву ProxyPassReverse для обеспечения корректной передачи любых редиректов, выданных бэкенд-сервером, клиенту.

По возможности используйте ProxyPass или ProxyPassMatch, а не mod_rewrite.

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/rewrite/proxy.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API