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

Apache: перенаправить определенный URL-адрес на локальный сервер на другой порт

Это кажется простым, но я не могу заставить его работать.

У меня есть довольно простой веб-сервер, которому нужно делать только две вещи:

  1. example.com/status.html возвращает локальный файл (это работает)
  2. example.com/atom перенаправляет содержимое сервера с брандмауэром, запущенного на том же компьютере через порт 4000.

Это не сработало:

RewriteRule ^$ http://localhost:4000

Это перенаправляло трафик обратно на localhost: 4000 с точки зрения запрашивающей стороны (т. Е. На клиентском компьютере).

Мое ограниченное понимание VirtualHost указывает на то, что это что-то вроде atom.example.com, а не example.com/atom

Думаю, мне нужно использовать ProxyReverse, но я не могу найти правильную комбинацию.

ОБНОВЛЕНИЕ: попытка предложения ProxyPass / ProxyReverse, сделанного Шейном Мэдденом, приводит к этому в файле журнала ошибок:

[Thu Mar 15 11:59:15 2012] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:4000 (localhost) failed
[Thu Mar 15 11:59:15 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
[Thu Mar 15 11:59:17 2012] [error] proxy: HTTP: disabled connection for (localhost)

(Локальный сервер определенно работает на 127.0.0.1:4000)

Не используйте mod_rewrite, если у вас нет на то причины.

Попробуйте это (поместите в <VirtualHost> блок):

ProxyPass /atom http://127.0.0.1:4000/atom
ProxyPassReverse /atom http://127.0.0.1:4000/atom