Похожие вопросы

Настройка Apache для внешнего доступа
Как настроить сервер Apache, чтобы быть общедоступным, когда он работает на ноутбуке через Wi-Fi?
apxs, apxs2 нигде не найти в Debian
как перенаправить url с порта через htaccess
Как преодолеть SVN-не удалось открыть запрошенную файловую систему SVN
Как заставить всех соединений Apache для использования в протоколе TLSv1.1 или протоколе TLSv1.2
Apache не авторизован для чтения монтирования NFS
Почему процентный вход в URL-адрес вызывает ошибку неправильного запроса HTTP 400?
XAMPP не запускает Apache на Mac OS X 10.6.8 Snow Leopard
OSX, не удалось прослушать 0.0.0.0 :80 (причина: отказано в разрешении)
Настройка прав доступа к файлам по умолчанию с помощью setfacl
Доступ к веб-серверу из локальной сети, но не интернет
WAMP: неустранимая ошибка: вызов неопределенной функции ibase connect()
http://localhost/phpmyadmin/index.php "говорит, что сайт не может быть достигнут". Apache не удается запустить
Как установить расширение SQLite PDO на Ubuntu

Апач ProxyPass динамического узла

Я пытаюсь настроить Apache для прокси на внутренний сервер на основе динамических имен хостов и с помощью других портов. Кажется, это слишком сложно для меня.
Это то, что у меня есть:

<Location /awesomewebapp>
ProxyPass http://[internalservername]:8080/awesomewebapp
ProxyPassReverse http://[internalservername]:8080/awesomewebapp
</Location>

но это (очевидно) не динамичная. Я работал над переписыванием правил и т. д. но у меня ничего не получилось. Что мне действительно нужно, так это что-то вроде:

^/[internalservername]/awesomewebapp
      proxy internally to
http://[internalservername]:8080/awesomewebapp

спасибо заранее

5
задан JCS81
источник

2 ответов

вы можете использовать RewriteRule для прокси-запрос. The документация apache для использования mod_rewrite в качестве прокси показывает следующее:

описание:

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

устранение:

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

RewriteEngine на RewriteBase "/продукция/" RewriteRule " ^widget/(.*)$" "http://product.example.com/widget/$1" [п] ProxyPassReverse "/продукция/виджет/" "http://product.example.com/widget/"

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

RewriteCond "%{REQUEST_FILENAME}" !-Ф RewriteCond "%{REQUEST_FILENAME}" !-д RewriteRule "^/(.*)" "http://old.example.com/$1" [п] ProxyPassReverse "/" "http://old.example.com/"

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

0
отвечен Brian Minton 2017-03-21 13:20:12
источник

мое предыдущее "решение" все еще не работало должным образом, поэтому я удалил его, чтобы избежать путаницы. Кажется, это невозможно, как я хочу, но небольшой обходной путь, использующий поддомен вместо подкаталога, все еще заставляет его качаться.

RewriteCond %{HTTP_HOST} ([^.]+)
RewriteRule ^/(.*) http://%1:8080/ [P]

источник: http://www.vanbommelonline.nl/2011/10/using-apache-for-dynamic-reverse-proxy.html

0
отвечен JCS81 2017-03-29 09:07:53
источник

Другие вопросы apache-http-server mod-rewrite proxy reverse-proxy