Spec-Zone.ru › Apache HTTP Server

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

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

Проксирование содержимого с помощью 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