У меня есть несколько веб-сайтов в локальной сети, у которых нет доступа к Интернету. Итак, я хочу настроить одну машину, у которой есть доступ, и использовать ее в качестве обратного прокси.
Моя конфигурация 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
У вас есть два варианта в зависимости от того, что делает ваш бэкэнд.
Если бэкэнд-сервер изменяет HTML-ссылки с именем запрошенного хоста, вы можете просто добавить:
ProxyPreserveHost on
Если вы хотите измените содержимое «фиксированных» ссылок htmnl внутри ответов, вам также понадобится функция « mod_proxy_html », которая представляет собой специальный подмодуль mod_proxy.
Сейчас я просто использую 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 или установить другой существующий
Не знаете. ProxyPassReverse
предназначен только для перезаписи перенаправлений , а не путей где-то в теле файлов. Это потребует почти полного знания формата содержимого, такого как HTML, SOAP и т. Д., Чтобы знать, где следует ожидать и заменять пути (например, в
для HTML , но также
,
Теги
Похожие вопросы