Apache ProxyPass Reverse DNS - Пересылать все исходные файлы?

У меня есть несколько веб-сайтов в локальной сети, у которых нет доступа к Интернету. Итак, я хочу настроить одну машину, у которой есть доступ, и использовать ее в качестве обратного прокси.

Моя конфигурация apache выглядит так:

ProxyPass "/website1" "http://192.168.0.1/website1"
ProxyPassReverse "/website1" "http://192.168.0.1/website1"

Итак, когда я получаю доступ к своему общедоступному домену / веб-сайту 1, он перенаправляет меня на веб-сайт1 , но когда я нажимаю что-то там, что перенаправляет меня на что-то вроде / website1 / about, это не работает, потому что исходный код по-прежнему говорит, что нужно перейти на http://192.168.0.1/website1/about , что, очевидно, невозможно из-за пределов локальной сети.

Итак, как мне заставить Apache пересылать все файлы и переписывать пути?

Или еще лучший вопрос: есть ли что-то лучше, чем apache, чтобы сделать обратное прокси?

полная конф .: http://pastebin.com/Mhuv7YzM

0
задан 16 February 2017 в 15:31
4 ответа

У вас есть два варианта в зависимости от того, что делает ваш бэкэнд.

Если бэкэнд-сервер изменяет HTML-ссылки с именем запрошенного хоста, вы можете просто добавить:

ProxyPreserveHost on

Если вы хотите измените содержимое «фиксированных» ссылок htmnl внутри ответов, вам также понадобится функция « mod_proxy_html », которая представляет собой специальный подмодуль mod_proxy.

mod_proxy_html

1
ответ дан 5 December 2019 в 18:53

Сейчас я просто использую nginx, он работает безупречно.

sub_filter_types        text/css;
sub_filter_once         off;
sub_filter              '192.168.0.1'  'proxy.mydomain.com';
proxy_set_header        Accept-Encoding "";

location /website1 {
    proxy_pass              http://192.168.0.1/website1;
}

location /website2 {
    proxy_pass              http://192.168.0.2/website2;
}

может вы даже захотите использовать кеширование для более быстрого доступа, затем добавьте это:

proxy_cache_path /var/www/cache levels=1:2 keys_zone=nginx:10m;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 10m;
proxy_cache nginx;

просто убедитесь, что создали путь / var / www / cache или установить другой существующий

0
ответ дан 5 December 2019 в 18:53

Не знаете. ProxyPassReverse предназначен только для перезаписи перенаправлений , а не путей где-то в теле файлов. Это потребует почти полного знания формата содержимого, такого как HTML, SOAP и т. Д., Чтобы знать, где следует ожидать и заменять пути (например, в для HTML , но также ,

Теги

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