Вот как я настроил свою среду, атм. Экземпляр apache2 на порту 80. Экземпляр Jetty на том же сервере, на порту 8090.
Пример использования:
Когда я захожу на foo.com, я вижу веб-приложение, которое размещено на пристани, порт 8090.
Если я помещу foo.com/blog, я увижу блог wordpress, который размещен на apache. (Я прочитал инструкции в Интернете и установил его с помощью AMP.)
Ниже представлены различные файлы конфигурации:
/etc/apache2/mods-enabled/proxy.conf:
ProxyPass / http://foo.com:8090/ << this is the jetty server
ProxyPass /blog http://foo.com/blog
ProxyRequests On
ProxyVia On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
ProxyStatus On
/etc/apache2/httpd.conf:
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_balancer_module /usr/lib/apache2/modules/mod_proxy_balancer.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
Я не создавал никаких других файлов, доступных для сайтов или доступных для сайтов.
Текущая ситуация:
ОШИБКА HTTP 404
Проблема с доступом к /errors/404.html. Причина:
NOT_FOUND питание от причала: //
Прокси-сервер получил недопустимый ответ от вышестоящего сервера.
Прокси-сервер не может обработать запрос GET / blog.
Причина: ошибка чтения с удаленного сервера
Я использую сжатие Debian на инстансе Amazon EC2.
Вопрос: Где я ошибаюсь? Какие изменения я должен внести в proxy.conf (или другие файлы conf), чтобы иметь возможность посещать блог?
Если я правильно понял, вам нужно заменить эту строку
ProxyPass /blog http://foo.com/blog
с этой линией
ProxyPass /blog/ !
Это указывает серверу apache2 не проксировать все, что начинается с / blog, что, я думаю, именно то, что вы хотите.
ОБНОВЛЕНИЕ: официальные документы здесь: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html