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

Прокси-сервер Apache и перезапись, добавить каталог к ​​URL-адресу

У меня есть внутренний сервер, работающий на http://10.0.2.20/ из локальной сети, которая работает примерно так:

/ (root)
|
|_user1/
| |_www/
| |_private/
|
|_user2/
  |_www/
  |_private/
(etc.)

Доступ http://10.0.2.20/user1/ конечно, содержит «www» и «частные» папки и проксируется через общедоступный сервер с помощью обратного прокси Apache. Хочется, чтобы произошло следующее:

http://public-proxy-server/user1/ на самом деле показывает контент из http://10.0.2.20/user1/www/ без указания его в URL. (/ private / не будет доступен через публичный прокси-сервер).

Ключевым моментом здесь является то, чтобы он был динамичным, поэтому все запросы к http://public-proxy-server/*/должен показывать контент из http://10.0.2.20/*/www/. Опять же, прокси в настоящее время работает нормально; ниже конфигурация:

(На общедоступном сервере)

<VirtualHost *:80>
        ServerName www.domain.com
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyVia full
        ProxyPass / http://10.0.2.20/
        ProxyPassReverse / http://10.0.2.20/
</VirtualHost>

(На внутреннем сервере)

<VirtualHost *:80>
        ...
        #this directory contains folders 'user1' and 'user2'
        DocumentRoot /var/www/
        ...
</VirtualHost>

На обратном прокси-сервере используйте ProxyPassMatch:

ProxyPassMatch ^/([^/]+)/(.*)$ http://10.0.2.20/$1/www/$2

И вы, вероятно, все еще захотите / корневое проксирование, так что оставьте это ProxyPass на месте - просто убедитесь, что это ниже в ProxyPassMatch, поскольку они проверены по порядку.